您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9243|回复: 0
打印 上一主题 下一主题

[centos] 用Nginx做端口转发(反向代理)

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发$ {* c1 d' y% l1 Y+ R
2 ]. P& w/ }0 e6 [; F, d
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
' X, Z7 i! V* C& U9 x! r- v- F# ]1 h/ b3 x3 f2 `1 U
将域名转发到本地端口7 l- `( ~+ i) k$ j
首先介绍最常用的,将域名转发到本地另一个端口上
$ ?8 y1 y* m, j4 W* W
  1. server{
    - R2 p' [* t# J% |0 p5 _) r2 r
  2.   listen 80;# I, D/ o3 g5 i
  3.   server_name  tomcat.cncml.com;; Z& m! r( s5 m, i4 z
  4.   index  index.php index.html index.htm;
    : Q( B& e- U' K4 @6 c
  5. 9 i% K3 D3 Y3 f/ l6 x
  6.   location / {
    $ O2 t% e. n3 w
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    3 G( ?% U8 f' E' S+ V
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求5 [! o( f; }- n, Z
  9.     proxy_set_header X-Real-IP $remote_addr;. p% z2 M$ @' s* F! |  F
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;$ ]. J6 C2 J- k# Q8 v; R
  11.   }
    ( ^1 m9 D9 U1 g- Q- n
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口- r" O+ f5 o* c3 R; _* u# k
+ k- }# }% b  a
将域名转发到另一个域名1 S. e- o. O' s: L6 S* O
  1. server{
    8 H5 d' Y) H& u2 h# I
  2.   listen 80;# S, b% ^8 U% h! \3 {. L
  3.   server_name  baidu.cncml.com;: m: D( M& B$ R
  4.   index  index.php index.html index.htm;- F8 g  o& T+ S" i1 G9 |( D' A
  5. # s. X3 x; a1 P6 w3 d
  6.   location / {
    0 |7 b# G1 @: ^& O0 a
  7.     proxy_pass  http://www.baidu.com;) k5 c6 H! K. @
  8.     proxy_set_header Host $proxy_host;
    2 i; a% U: J0 {" q, G
  9.     proxy_set_header X-Real-IP $remote_addr;
    . T6 i# I- C; _3 ~0 u
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    7 m4 B1 `1 Y0 d* ]
  11.   }
    & d) h% v* U9 @. F" x( H
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名! _8 U& |1 P: N6 Z
  1. server{: L5 B& M# a% S8 Q7 r9 D
  2.   listen 80;
    2 T, f, i; b; e7 Z- f- f' |7 G3 c
  3.   server_name 127.0.0.1; # 公网ip& h) }3 [, I% d3 }5 T' t8 n
  4.   index  index.php index.html index.htm;
    ' B4 ]3 H6 p1 D5 [6 U
  5. 8 T+ Y, |  ?' i( q1 W3 ?: V
  6.   location / {
    6 b% U) i$ @$ ]; B1 _
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com9 r& l( o3 A1 z% r5 R/ h8 y
  8.     proxy_set_header Host $proxy_host;
    * p4 |. B9 R: d; z) W0 I; t) W
  9.     proxy_set_header X-Real-IP $remote_addr;
    ; Z& F0 M0 u* x2 R) y- b4 q/ C
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    2 y# B" \% g, A3 u/ _6 d
  11.   }& M7 G% C3 X' @# Y  ]
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
3 v; [% e8 }) U4 ~. C6 ~5 n. X9 K7 e; Q
加 / 与不加 /
# U+ a, G9 C; c6 X5 r7 e$ B2 Y, c0 l在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
$ X8 B5 @+ N) D* I# `8 V2 ?
) p# [* z0 C. W4 Z  |' B& e例如
3 W5 s* p/ ?8 _- l3 W$ W+ r  P' ^) w# k
加 /# w) E+ }# T' M# h
  1. server_name cncml.com5 `$ Q# Z6 W. ~8 M9 `8 o" k
  2. location /data/ {0 Q0 O7 s, Q2 c0 _+ A5 K5 W7 _/ P
  3. proxy_pass http://127.0.0.1/;  `1 N7 s! x! C8 v* u' R# b5 I
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
( n+ E2 B1 E' {0 U$ V% b5 K$ {* Z7 ^4 G8 C6 q1 l5 \% T
不加 /
# m5 b) n; s8 E
  1. server_name cncml.com2 \) f7 ]! @+ M! Z" Y6 I& X
  2. location /data/ {3 e6 Z1 |7 N/ v- \: t2 y) g, g; h
  3. proxy_pass http://127.0.0.1;
    : l' R; r, X7 H3 E7 Q6 V
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html9 y3 u9 b3 P$ T: N

2 v$ N4 g. a6 H
游客,如果您要查看本帖隐藏内容请回复
4 T" I- h- X2 {4 c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-6-13 17:15 , Processed in 0.145197 second(s), 21 queries .

Copyright © 2001-2024 Powered by cncml! X3.2. Theme By cncml!