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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发0 @" i8 Y8 {6 C$ ]  l% J
: C1 c8 o) I. A1 G4 I) G
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
8 \! K  b) B5 g0 Y! c
* U6 i3 L9 G( c9 b6 ]. G4 B将域名转发到本地端口
4 B9 _. G6 Z5 F; M- d: {8 h首先介绍最常用的,将域名转发到本地另一个端口上
7 m' }0 B% q+ h/ P
  1. server{, n0 d* q  _) I+ ^
  2.   listen 80;
    # r. W  U4 }2 r
  3.   server_name  tomcat.cncml.com;
    , W) @: {/ Q2 n* k9 _, v4 _
  4.   index  index.php index.html index.htm;* v; V+ o7 _, R6 a4 H
  5. $ @; i  N6 n- F" W# |2 Z  F. L5 @
  6.   location / {  l2 z  G3 i8 X- H/ G
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    ! u. r4 ~/ G+ H
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求7 w6 |" E6 c' U& K' c4 P/ |
  9.     proxy_set_header X-Real-IP $remote_addr;- P9 g. y. ~& T" C2 ^  \0 z. _
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;+ @* }& \4 R& i  D1 y) B
  11.   }
    # B# U0 U: `( C; z8 D/ Q" S
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
/ V2 U3 j( j( P0 [8 k; t( |
' ]$ c* U3 w( w, W5 e将域名转发到另一个域名, w9 a9 d" H6 ^. ^2 w0 G
  1. server{
    $ {6 l! z% \! t# U9 J8 A  S
  2.   listen 80;1 U; I- S. Y# G; o
  3.   server_name  baidu.cncml.com;
    ( G- Y5 [/ o5 q0 l4 p3 E
  4.   index  index.php index.html index.htm;
    ! W. j0 E3 Y2 e+ ]# V, G
  5. # j: j% Q$ ?; v
  6.   location / {* U( l. j6 l9 v! ~) `
  7.     proxy_pass  http://www.baidu.com;
    3 T! J: N6 E/ j1 T
  8.     proxy_set_header Host $proxy_host;, B6 b9 W7 {1 f. _7 K5 [6 ]
  9.     proxy_set_header X-Real-IP $remote_addr;9 M7 S  J$ A# D: S; f8 r) c/ y0 X
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;" c9 k2 O$ h5 A- [& ]2 }
  11.   }
    ' W2 l2 V0 W$ P* y( ]1 z
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
" s# u3 l" e- J- {/ N
  1. server{
    / S8 P: \' F) g+ W! _! w( n
  2.   listen 80;
    0 |$ L8 e& m8 p7 S! S- d
  3.   server_name 127.0.0.1; # 公网ip$ {; V/ |) g/ p) n: N0 X# M9 @
  4.   index  index.php index.html index.htm;
    ) h" J5 I& F! C

  5. $ z9 ^  [2 N+ v/ l2 k+ @+ [/ c
  6.   location / {0 B( i+ y6 w. N, V+ b* [
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    3 }* m4 {; \: l
  8.     proxy_set_header Host $proxy_host;" r1 D& _6 i6 N. ^5 v9 A
  9.     proxy_set_header X-Real-IP $remote_addr;# X4 f2 V7 r, g. `
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    3 Y" m# \- Y4 H, z
  11.   }
    % v5 r& c: U0 o
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com6 c2 w4 ]& l; H6 w9 x
& \9 L8 G7 E( B0 l
加 / 与不加 /- N* e$ s1 u( @# p9 B! N
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径8 |% ?& Q. R# j6 m- T; q
( A8 n3 b/ d3 K
例如( F1 k5 t+ h+ d8 e! i
4 w0 j  h  o! `0 N( Q9 p* F( S
加 /
' o4 v' X" x3 y+ T) h5 ^
  1. server_name cncml.com, ^/ _0 U5 ?7 }' c! r; s4 u, ^1 `: h- U6 ?
  2. location /data/ {2 p5 \) y5 {7 I8 r1 z3 Q2 y
  3. proxy_pass http://127.0.0.1/;
    ! m3 w* J: N0 H7 \
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
7 o+ V" K- f* t5 o+ t/ X: C0 g: G, Q( G
不加 /" e( G+ l- p  x- s# d) |+ M
  1. server_name cncml.com1 I5 ~7 u, t& ?' [  J& ]) F/ w2 W" R: m
  2. location /data/ {; y; w; w9 _4 r: o7 i
  3. proxy_pass http://127.0.0.1;' b; R( u/ s& H- \. R
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html, d: n6 r7 Y' w/ [  p4 F
$ z/ z4 {6 }0 z" S: ?+ [" X6 R5 E5 k
游客,如果您要查看本帖隐藏内容请回复
( f& G: c- G7 j$ N$ ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 15:52 , Processed in 0.057422 second(s), 20 queries .

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