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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发5 U; f2 ^- u% C$ H
% F. p5 K" `$ o9 I/ a
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则1 P# y: ^: i% z3 @8 o

% V0 Q& h+ y+ `) E5 q* K将域名转发到本地端口
& _1 C1 t" S- j9 G) r, e) y首先介绍最常用的,将域名转发到本地另一个端口上
) _( ^) ], \5 `+ f( @. E
  1. server{  u% g4 H# n- J% B5 R/ w# T
  2.   listen 80;, m2 A! }  B, Q% F+ r0 e6 E
  3.   server_name  tomcat.cncml.com;& h2 O) z9 L! A
  4.   index  index.php index.html index.htm;% {& j' P2 m; g0 o3 c' l! m# _
  5. 3 g- U. B0 v; n: I! N/ z2 ^! u" }4 z; x/ e( |
  6.   location / {( }. l% T8 r0 d6 I( Z& W2 N
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则% W2 u; [- F, z8 d1 K) ]; t# @
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    ) y9 F3 U+ k3 h) ]4 \& V
  9.     proxy_set_header X-Real-IP $remote_addr;
    & q& l3 |+ v* ~
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ! Q8 x; v: I+ I% r( Q0 X
  11.   }. V! X' T0 F- C# t
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口$ R  u. z1 {& r# y6 }) j, W3 @3 I1 a

' h+ O) T% u6 @& S9 `% |: Y3 T# c将域名转发到另一个域名7 Q9 M! O# H6 ~, R8 ~
  1. server{$ t) c, D  H+ ]  j
  2.   listen 80;( N% _  C0 M  s
  3.   server_name  baidu.cncml.com;) M7 d. B( b2 u( j9 }
  4.   index  index.php index.html index.htm;
    & X( v2 \5 P0 J  ~% A: m

  5. ( n2 ~' j4 |) i, y3 Y: \
  6.   location / {& [7 q$ B5 T* U
  7.     proxy_pass  http://www.baidu.com;
    * d7 {% e/ U- ?
  8.     proxy_set_header Host $proxy_host;, `% t9 s9 L7 r/ m) x
  9.     proxy_set_header X-Real-IP $remote_addr;
    : T; F9 t, W  O8 x/ x. x; J& B6 y
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;: z1 i4 B" S6 C/ |! K
  11.   }
    ) j' U$ e' a* a) V9 J
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名6 K: X+ d9 H6 ~3 r2 l+ V- o" Q
  1. server{
    / W  y) _1 `8 g; Q+ h7 ~
  2.   listen 80;
    , }* S) x& s( f1 p$ L2 e
  3.   server_name 127.0.0.1; # 公网ip
    , o3 U- ]) n( `. N2 y7 x
  4.   index  index.php index.html index.htm;" _7 j; i3 h$ H  w/ ]% X
  5. 1 r3 e9 a! v# Y* Q
  6.   location / {" ^1 ?- ^! s' i- N1 `* d
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    2 U% ?% |* W; t" Q/ f
  8.     proxy_set_header Host $proxy_host;
    3 P8 E7 a# I4 |; e
  9.     proxy_set_header X-Real-IP $remote_addr;
    ! P' D! I! D2 s) ?- [
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;0 d2 c0 u# s, s2 Y
  11.   }
    , |& B2 }  A8 O: p3 \
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com8 u, ^) D' G( |. J1 n, q2 j
9 V+ ]( m0 p, ]7 x/ I$ u) F( I3 s: Y
加 / 与不加 /, d3 p( D8 P- v, c5 L
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
) \' D7 e, x" J! p( {# a) U- \3 I' ]! \' K# j; q
例如
  P7 E8 i! f; p( e
3 A9 h' F- J' ?- m# Q6 u6 b加 /
& j$ X! v( Z* @7 v
  1. server_name cncml.com
    ; Y, }4 K+ P& v3 k
  2. location /data/ {
    : N$ x0 d' r8 x% R! I0 c
  3. proxy_pass http://127.0.0.1/;
    " R1 L. f# ?# h" d0 V4 O
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
- E0 F1 ?% n8 O2 z( f; q8 j" h5 a4 l1 b4 f( G
不加 /  ^) L& Z9 o+ Y) v4 a
  1. server_name cncml.com
    2 _8 P8 U9 U1 f; g: W- H0 }
  2. location /data/ {$ f, l) r! @- H% Z  u9 F7 r+ X
  3. proxy_pass http://127.0.0.1;
    ; ~; s) D* f. ]" [: [
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html( F# a# H7 Q! D

  {$ z8 i, u0 ]
游客,如果您要查看本帖隐藏内容请回复

4 W. q- K9 J9 y* `5 O
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 16:41 , Processed in 0.066340 second(s), 19 queries .

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