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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
( W; |! D, N; k& ]+ U! b$ y& `( ~7 z8 k7 u0 i. S" [) C6 F: v
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则0 A4 F" c5 _! |6 Y: W; N

  i( V$ ^7 o; e' w将域名转发到本地端口
% X: C' F7 R* K0 k% f3 ~+ h首先介绍最常用的,将域名转发到本地另一个端口上1 E; E8 d# ^+ y3 p, O4 ?5 P0 z4 h2 F
  1. server{
    ) H1 D2 o$ C0 e7 E1 r8 M* [7 k
  2.   listen 80;
    8 |3 E  d  [8 G; y, f: x
  3.   server_name  tomcat.cncml.com;8 b7 o/ K5 R6 w  r3 e4 R: c
  4.   index  index.php index.html index.htm;
    $ l$ {/ w( Y0 r
  5. + x6 X# N/ e* G$ p) H/ `* y4 \) B
  6.   location / {
    9 r1 r  o0 r- @
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    7 o2 D6 ^/ b" D7 G
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求4 C6 c- G1 m4 D
  9.     proxy_set_header X-Real-IP $remote_addr;6 ?4 ~/ M6 _4 P
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    / G) \$ B$ U# k1 o1 S" Z
  11.   }
    5 @# y' d2 c, I- S1 L2 w
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
9 n# z! V/ p$ L: I/ f$ u, ?% _" e6 {( l$ T( P6 G
将域名转发到另一个域名1 \4 l0 z8 {) L/ I
  1. server{
    # y5 ?' D8 ?0 X$ n: Y
  2.   listen 80;
    ( F9 H! s: |( J' U
  3.   server_name  baidu.cncml.com;& m! h2 A5 j5 L9 T
  4.   index  index.php index.html index.htm;
    : b0 J% L2 _# A; @( o9 A- A+ S
  5. 9 F6 _3 J* o) B- E/ e# \
  6.   location / {1 ~2 V4 h5 |+ A; j3 q! c3 _1 U
  7.     proxy_pass  http://www.baidu.com;8 H9 t. W& ?1 W6 R! C
  8.     proxy_set_header Host $proxy_host;( ?0 i9 s  x* P. E; m3 C
  9.     proxy_set_header X-Real-IP $remote_addr;& Y! s. n9 w! K4 _
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;% V' H& p( \. l# s8 g. F" T/ n
  11.   }
    ) D" U* e# ?/ P4 P- ?/ b% v+ R( h/ B- @
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名+ t) A3 I& y6 N) X7 M0 b1 B# s, ~: V
  1. server{+ }& J/ {0 ]0 a9 r; @' v8 N( b
  2.   listen 80;
    # h6 {6 t% B( w; H2 ^$ B* g
  3.   server_name 127.0.0.1; # 公网ip) \- B5 |% E& ]+ N# o6 v, D0 j
  4.   index  index.php index.html index.htm;
    - M9 u6 c+ }9 N' o# t* ]6 X  |
  5. + C7 Y* s2 S8 H: v, p
  6.   location / {" ^1 B: i0 _, o3 u
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    5 V$ z+ E  L0 L1 F2 i! ~9 l, i) [0 n
  8.     proxy_set_header Host $proxy_host;8 Y% n1 F" U. N. A4 F
  9.     proxy_set_header X-Real-IP $remote_addr;
    3 C: I/ ~7 x/ ], `
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;! ~8 U1 K) B5 O+ S' c) w
  11.   }( D6 _  I/ a7 @! k, Z8 D
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com2 k% u2 R  L& N& O% W
) Y$ g: {! Y9 {# \/ q" R/ e
加 / 与不加 /
7 V$ P$ O7 X& m在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
: _+ E6 K& N# L. J! W# k$ S& t
例如
8 x# j% P9 O: t+ ?: u
6 D% i1 k- b' t4 k加 /
% h: |+ d2 Q; h2 @
  1. server_name cncml.com6 ~/ m/ J2 V: f' E
  2. location /data/ {
    9 l6 @  R+ z# c
  3. proxy_pass http://127.0.0.1/;
    8 X- x4 ^/ \# M, t; q5 O7 K
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
( e& y, N( k" Q- Q# k# _' u" s2 N. }  q- \# c3 R6 w
不加 /
2 L! x# J" J' B% Y9 u3 O
  1. server_name cncml.com
    / z  D+ m4 t+ W  C9 V  }
  2. location /data/ {
    & G! P2 D& i  X9 d8 Z7 Q
  3. proxy_pass http://127.0.0.1;) D% T+ S; u- d6 x" P) K# e
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html" a5 O3 [. f! X: I$ _- j2 H2 ~

4 e! D' H: k+ }# N
游客,如果您要查看本帖隐藏内容请回复

! w( V! \1 ^; A, b; a
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 17:17 , Processed in 0.124341 second(s), 19 queries .

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