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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发# u- `  b+ p: h2 v  \8 k
$ O# u* R4 A: S6 ?6 P
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
3 }* U" B9 p* g; ?/ e0 W/ v1 v/ i9 Z/ ]
将域名转发到本地端口
0 F3 z! H+ g* V8 k首先介绍最常用的,将域名转发到本地另一个端口上* C1 S5 {9 j2 x
  1. server{
    ; @# Z  {2 o/ d
  2.   listen 80;
    + z7 J& k* E' |
  3.   server_name  tomcat.cncml.com;! t, X2 V# \( y( N
  4.   index  index.php index.html index.htm;; ?' d' T: c/ o/ I+ K6 @7 q/ F, D
  5. 3 H! i( `& F0 q
  6.   location / {4 H: |3 f$ W" S
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    + P; y5 r1 L4 P2 n5 q3 V
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求' I) B7 i/ d' V2 Z, e! J# B
  9.     proxy_set_header X-Real-IP $remote_addr;* U) S. D( q! j  [* h, F  b
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    , B$ I) `% J2 G& y4 w
  11.   }$ ]+ y& o" R$ D0 P( k* v8 y
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
5 O* f& y6 \6 ^( i
1 j; Z; Y6 M5 {6 Y7 Y5 A将域名转发到另一个域名8 b. g. @2 s' ^0 d6 x
  1. server{; h1 I/ |& ^  h& g* d. a) Q5 ?- n
  2.   listen 80;8 T( y* [6 n/ N+ t
  3.   server_name  baidu.cncml.com;
    $ I6 b: ]" l% \' R4 E
  4.   index  index.php index.html index.htm;
    ) g/ Z& A; b* s  z1 l, A# @

  5. % R4 T' x6 Q7 Z& u) [; k) O: s0 C
  6.   location / {
    9 S9 V$ U# ~% N4 P6 l2 h. l
  7.     proxy_pass  http://www.baidu.com;
    + }; i# _& k& D7 I, E7 e( _' M$ H8 ]
  8.     proxy_set_header Host $proxy_host;0 W+ I8 _8 N9 W9 q' l( K
  9.     proxy_set_header X-Real-IP $remote_addr;' f5 \) W' [, C" V
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;8 ]2 c$ P0 c8 j
  11.   }
    ; a7 b% i8 h  r& X
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
: l1 ]* @& |4 o8 y: d
  1. server{. S% ^1 ]1 B& Q7 d& ~) Z( s
  2.   listen 80;, X* r, @- o) m; T7 K5 H) D' {' R
  3.   server_name 127.0.0.1; # 公网ip
    " P+ E. |' o. m- s
  4.   index  index.php index.html index.htm;
    5 }- @: \& o% X% h0 X

  5. ) A) r1 P' O# \7 |
  6.   location / {6 H8 y3 x- \8 A5 ^
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com* H; K# g* p+ }1 |" S
  8.     proxy_set_header Host $proxy_host;
    / B7 K1 }4 K' f3 E  f: S
  9.     proxy_set_header X-Real-IP $remote_addr;$ f4 w* V  z: ^* X5 n
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;0 `: L7 C4 R6 y% S5 p6 |' m
  11.   }
    ( K1 C% |% V$ M$ X: N( F+ H, i" o
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com& {+ N5 z2 c% _# u

1 r) Q; V, U/ \; s' q: M+ {加 / 与不加 /' {- Y7 w0 A1 r2 T& B
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径2 X/ }1 }+ M$ v: P
; Y) Q# l# u! g$ _/ S9 V* s
例如
2 F1 z8 ^9 _. D. a9 w: C& b  c* N! |6 r3 Q) k3 s* c$ F( ?! z9 t: s
加 /; b7 ?0 ^; f! P  `) p/ e+ g
  1. server_name cncml.com! J' f9 o" e, N/ w; `3 s( w
  2. location /data/ {
    2 U3 |5 _" W: `5 I, Q
  3. proxy_pass http://127.0.0.1/;9 T9 H6 ~. C2 `; i( K  n2 m3 t
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html5 {+ ^2 y" k$ x$ m- J% ]. l
9 k; r1 }% @0 S9 a2 `& u( w
不加 /
4 R) A: N( ]) X3 L- ?' O# N
  1. server_name cncml.com0 H: X* F) d+ T; j5 G9 I2 }
  2. location /data/ {
    # u) q0 [9 k# W: e8 k7 G
  3. proxy_pass http://127.0.0.1;
    3 z. ]+ b& }5 }  D
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html4 n/ m7 p" _/ X# _" L  V  E( O
* ?. P0 ?% @6 I- ]' {3 ]
游客,如果您要查看本帖隐藏内容请回复
( t$ J2 v0 E! p. I2 ?' N9 r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-20 15:20 , Processed in 0.160529 second(s), 20 queries .

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