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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发  j, w3 ?) j% ?( M' c
# n" [" B+ b/ K4 N& S+ g
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
/ x* g( F2 k( F  W. T; ]( y, M5 }, d
将域名转发到本地端口8 h; n% `- k! C0 a. m
首先介绍最常用的,将域名转发到本地另一个端口上" |" @" J" i# h- x$ N6 C) j
  1. server{0 Z- b2 ]0 `% b/ \; w
  2.   listen 80;
    7 K0 u- L) g( w' ~7 H) l% G3 g1 K
  3.   server_name  tomcat.cncml.com;
    1 ?* ]8 p& h. U4 j9 H* q6 _
  4.   index  index.php index.html index.htm;0 V$ A$ [0 f1 m" l* ^+ `

  5. 6 E0 I" F. U) I# f7 ^, p/ Z
  6.   location / {. z1 O9 e+ K/ U
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则! z% d  Q  ^7 Q6 h% f; P0 U
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    0 ?: E- l! A! r' y) {9 C* Y
  9.     proxy_set_header X-Real-IP $remote_addr;  c. N# X; d' T& Y6 C! ]) T5 `
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ! H! K7 S9 N/ R; ?& z
  11.   }5 A  K/ M7 Q! ^8 Q. o5 E3 L
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
: p9 Q8 y* j& [1 ~% q8 h6 b! [% w6 b5 s  \
将域名转发到另一个域名
4 O6 E4 D7 z( v1 ^. Q. v" p  ?
  1. server{
    & m+ e( s! U. b% }* l, b/ s
  2.   listen 80;9 t2 x- F" r& A: ?6 n$ P: P6 z
  3.   server_name  baidu.cncml.com;
    $ u' |/ Q( s7 b7 U  h" q
  4.   index  index.php index.html index.htm;
    + s, v8 f5 r+ h2 y

  5. , m0 O/ p8 ?; S( e) w$ I9 a% x
  6.   location / {
    , B$ k8 U: }7 A2 R3 A- O8 e0 A9 q
  7.     proxy_pass  http://www.baidu.com;
    6 ^% I! ]9 i! o- b
  8.     proxy_set_header Host $proxy_host;
    8 g8 W1 L/ Q# Q5 @
  9.     proxy_set_header X-Real-IP $remote_addr;
    2 D. u" e1 g' h5 X
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    + a6 i4 _3 g5 x3 x
  11.   }
    2 W4 f1 U, v# ]4 }5 b
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名4 _/ [* z+ Y* p* I
  1. server{
    , M( P+ T* v8 ^8 E0 B! m
  2.   listen 80;4 E( T2 _0 @) j2 \% x$ t
  3.   server_name 127.0.0.1; # 公网ip
    % E" l  F0 P) o7 g* ?, B, l& M# B
  4.   index  index.php index.html index.htm;% G, q6 r- f% S  F* s9 \" h3 L/ E9 N

  5. 3 G$ h' \1 a) ^% r" f8 x9 B6 m3 K
  6.   location / {
    8 K# Q! v5 a1 |( @, ?" r- L6 h, U- ?
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    % h) ?  L' i7 Y
  8.     proxy_set_header Host $proxy_host;) J6 _6 q( ^4 E% `% O3 T
  9.     proxy_set_header X-Real-IP $remote_addr;* j5 B" v! I* s$ d* U
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;' ^4 u" j% e/ B6 Z
  11.   }9 P$ C' D8 U2 Y7 ^
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com( |. ]: t, j7 r& z1 m

8 k, z% m6 v, }3 \# P8 {加 / 与不加 /0 j5 h) p! d* Q7 I
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
, l/ v6 S" O% L/ Z7 [% `0 F
, X% }3 y/ z: V9 B* w2 C2 d. p例如6 j) i8 a! I8 ?, c

" F2 U$ @: s2 Y加 /
, V; c7 x6 b* N% w% o+ z7 e- [
  1. server_name cncml.com
    : D6 _0 Y+ I, V: t  c3 E0 D( E" l
  2. location /data/ {9 D$ L" I1 p: U0 P( _) M0 r
  3. proxy_pass http://127.0.0.1/;
    . X' [& D! I) p! N+ }% s  ^: V) A* G
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
) e9 W0 E8 e5 a- @1 h- @% S
5 @5 q5 j2 @' l/ m不加 /+ Z+ O( v) F, n2 m9 I
  1. server_name cncml.com  E: j) t7 v4 w; r3 K2 M
  2. location /data/ {* b- _7 f( G9 d( q) u& E4 f, x
  3. proxy_pass http://127.0.0.1;
    2 t6 G3 L1 @$ R& {  i8 F
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
5 r. ?, p$ X9 w6 S1 r; K# s$ e2 U3 K9 \
游客,如果您要查看本帖隐藏内容请回复
8 S6 X3 u4 _7 E: n
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 10:04 , Processed in 0.118820 second(s), 19 queries .

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