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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
4 Q4 }" {% {) u" ]6 R; U& f9 V
' z# V/ ^/ \  z$ _本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
# Y& ?+ _- {* q/ b6 L" k
; b. Z$ r; V7 S  T8 X: o将域名转发到本地端口
# e4 B3 p0 j3 Q0 _, Y首先介绍最常用的,将域名转发到本地另一个端口上
8 m7 g* b" _6 ]" E
  1. server{4 n7 e% S  t  ]& S6 L4 y4 Y
  2.   listen 80;! m# e+ v# o% x9 R5 }% J
  3.   server_name  tomcat.cncml.com;, ^( i: j- W; n  A
  4.   index  index.php index.html index.htm;6 \7 D; Y8 F3 X5 f2 u6 ~

  5. ) i) T' _0 k( h9 u6 A5 F8 I
  6.   location / {
    7 w$ M" u5 C2 C3 g
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则& Q" J' s$ @6 v& M
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    7 Q" e( Y+ R% ?9 ~
  9.     proxy_set_header X-Real-IP $remote_addr;6 C, z. O4 J( N3 `; H. a
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;2 _" Q7 {( m. W" X% E
  11.   }+ m( n0 l) H: d  {
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
; \. M8 C& o. T- w, F  F2 {
$ R( {! z, ~% |3 F# N+ o" H! e. d将域名转发到另一个域名' O5 p: t2 ^( Q5 D# M# u
  1. server{
    1 @7 e0 P5 b, O5 D" X
  2.   listen 80;! t  G8 m1 A- @3 h) c* ]9 U
  3.   server_name  baidu.cncml.com;
    7 U; `( M) s) T* H* X( ]# X
  4.   index  index.php index.html index.htm;. J: i7 n/ s. n0 Q

  5. 4 G& d* d9 B  g
  6.   location / {- f7 N' z( i0 o2 k/ |
  7.     proxy_pass  http://www.baidu.com;% h( q/ F& L! [7 ^; ^
  8.     proxy_set_header Host $proxy_host;/ B( w% b" L1 D1 j- P8 H8 R
  9.     proxy_set_header X-Real-IP $remote_addr;
    9 ]3 ?) J2 ]8 J- I4 R9 o7 F) b" G/ Y3 @
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;( T1 `7 f2 W5 I) h7 W. C
  11.   }3 J6 p, M' t' A- }7 I9 c
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名) C: P4 U7 I" x- Z- W" ?3 X
  1. server{; K) R3 |0 g% L- W9 [- q  e5 |; s6 r
  2.   listen 80;* Q0 V: k- ^0 b" I
  3.   server_name 127.0.0.1; # 公网ip
    # e9 H, m3 e1 F2 a' U5 @) |$ P
  4.   index  index.php index.html index.htm;
    7 S- K  p4 M9 x3 }1 S. n" f! i
  5. 8 O' a+ R# C" \+ _; S
  6.   location / {
    5 d5 L3 q" R* A$ z9 }
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    , w6 C5 Q. |' P* h' m# f; |; s) s
  8.     proxy_set_header Host $proxy_host;
    " X, k% j5 R% [" Q
  9.     proxy_set_header X-Real-IP $remote_addr;7 ^! {& ^+ z  o! E
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    + H1 ]- z5 r( h. ]
  11.   }: _" ?& l- ]) d! I
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
- B0 V5 h2 {1 D% Y; ^
0 G4 e- n8 _# Y加 / 与不加 /7 a4 z! f. k5 P5 \# O, h  l% f
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径) i+ d& @5 r9 ^, ?' h
& ~- J$ s( P/ Y
例如2 Q+ f6 a: o' @$ ]

" J! g! d4 z! x4 a" {( k加 /, k7 r9 Q3 r1 T! L) O! p
  1. server_name cncml.com+ t4 }# O- ~" a' Z1 `8 k/ Y3 E
  2. location /data/ {
    & ?. W9 M8 z0 o$ \- n# w
  3. proxy_pass http://127.0.0.1/;
    6 u) a1 `$ A# ?$ r6 `' F4 g
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
0 ^' z+ [7 B8 J' t/ _6 z( I. y8 F( p, A% o
不加 /
% X! L& p8 s$ {. g! G  O' T$ f
  1. server_name cncml.com
    - t3 W; Y& a  s3 D$ E3 v
  2. location /data/ {
      ]/ w3 Y5 `0 ~. G
  3. proxy_pass http://127.0.0.1;
    + P3 E. J4 K6 \- }4 l( B" Y
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
0 s! z8 p1 i. _: K- }9 I% o
+ x2 C! Y8 B+ `$ _! n
游客,如果您要查看本帖隐藏内容请回复

' z; Y# m6 c  U- o$ g
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-8 04:42 , Processed in 0.126471 second(s), 19 queries .

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