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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
1 O) ?$ j  r5 r% {$ c, Z
" e! K% u7 U. q! u- y本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
& S5 Z3 D* L- z& k
. V! c$ k* R& r, G; i将域名转发到本地端口
" j" c0 d! I; s4 m首先介绍最常用的,将域名转发到本地另一个端口上6 E/ R6 @( |! g" g6 S- u7 t  E5 @
  1. server{
    / }4 u6 `% L9 x' [
  2.   listen 80;) b' Y, k5 M- l5 {9 x
  3.   server_name  tomcat.cncml.com;+ d# K1 V/ |! \" ?
  4.   index  index.php index.html index.htm;
    , M$ M$ F. d- e# V- e* I: |

  5. 4 D$ h  h0 m* }2 ]
  6.   location / {
    7 M$ \4 }1 D3 N6 u( y
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则( S" H. K% J4 G$ ?$ ?0 q
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求1 M$ b5 j6 Z9 Y; U/ e1 Q) v8 Z
  9.     proxy_set_header X-Real-IP $remote_addr;, ?6 ^' H, y% U4 A: k  b! Y9 {
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ; V) d( V  s0 ]' [
  11.   }6 k( P7 V) V, O  j4 D
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口( ?2 O, t' f; b
/ W  q4 e+ C: p0 B8 P6 w
将域名转发到另一个域名5 p% Y8 Z9 ]/ {8 d
  1. server{6 g; e0 G3 v( y7 E& B3 m- }0 J
  2.   listen 80;
    3 F/ |* g; }1 t  L0 V4 B& V, l2 W
  3.   server_name  baidu.cncml.com;/ F$ Y( T# F% O( Y' m
  4.   index  index.php index.html index.htm;
    : ~$ x# Z1 V  F7 F- \9 _# y
  5. 0 \5 u3 o& i$ w  S
  6.   location / {) }, \8 P" i3 z5 l7 g! {2 I/ M
  7.     proxy_pass  http://www.baidu.com;2 c5 W" a2 r- u& X# B
  8.     proxy_set_header Host $proxy_host;) m& }; t" R# B" }
  9.     proxy_set_header X-Real-IP $remote_addr;
    * _/ S8 R1 Q% J% U$ O
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    1 H5 `! G, ^* c
  11.   }
    " i/ |# @/ c1 }! z! w
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名: T+ C# k9 Y+ j# D  b: x
  1. server{! |! Q6 {0 ?2 ?; p+ @' L/ R% f4 U9 C
  2.   listen 80;/ }6 J1 E, K" M( K# |1 L
  3.   server_name 127.0.0.1; # 公网ip
    " b" E+ U& S5 H: B; b  R% z
  4.   index  index.php index.html index.htm;
    ' a, t7 v% X2 S: m# q% ~7 U+ m
  5. : A" Q- B) h1 N9 i
  6.   location / {
    . |$ y; Q& M3 g
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com* k* z' ]% d* s2 A
  8.     proxy_set_header Host $proxy_host;
    3 V) O# Z$ D& g! t9 ?" S
  9.     proxy_set_header X-Real-IP $remote_addr;1 x0 u: ?; ]" U: T
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;8 @$ N9 Y* P) X! o3 B
  11.   }2 K6 s" D; x( U* V1 f; N. J
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
  T' M4 D0 Y/ k
5 B4 ]/ `: b. C7 y3 O: L3 O加 / 与不加 /
9 Q$ N* o0 M% x4 a) O( C( l. N& I7 d在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径7 O% G* _6 T. Q8 `! J5 M
0 I  L2 {. r: V2 P! \; o
例如
0 X5 T: b7 c% X* _3 p" `1 K: O* I( k7 y
加 /' c1 v" q: p8 O* y& y6 q
  1. server_name cncml.com
    , A8 Z8 d' m' J& ]4 r
  2. location /data/ {0 ^" y5 p" H, c4 ?' C5 y1 d# s1 E
  3. proxy_pass http://127.0.0.1/;& w$ ]+ {. c3 r# Z% L+ z* ]- _
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html6 b' V4 Z1 w5 c/ O, Q( A
; u; p7 J1 o3 A6 T8 b
不加 /
+ Y+ T+ y, k7 t. f" K4 p
  1. server_name cncml.com
    3 Q$ a  B; H, q0 s& [) q6 r6 S
  2. location /data/ {
    * R' k* X; _# ]7 B; F- B) l: M
  3. proxy_pass http://127.0.0.1;
    : ?# y7 ]# u! z: n5 a; Q) h+ s
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
& x; A3 a) u4 j* I" H+ T5 d) X1 m+ s, q
2 @3 `# U: Z2 j1 p2 U" |
游客,如果您要查看本帖隐藏内容请回复
' ?9 M& Y8 V! M8 r( K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-5-2 13:34 , Processed in 0.054805 second(s), 20 queries .

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