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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
/ x6 X% O' m/ M/ d1 I& {- U& V" W* `6 g. \, t. L
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则: h1 y4 t4 J( Y3 V2 o

1 @7 B9 p( p: g( M. O- E3 S  m7 G将域名转发到本地端口
- x- p1 E/ r+ d% l首先介绍最常用的,将域名转发到本地另一个端口上
* ?$ o& q" r) q1 F5 h5 ]
  1. server{3 j% f. S6 T' Z9 _
  2.   listen 80;
    + p3 N& O2 \5 j6 Q9 U
  3.   server_name  tomcat.cncml.com;( V$ e5 B9 o) u* P# V# P) ]
  4.   index  index.php index.html index.htm;) z+ o$ c/ O5 k8 K3 K  W

  5. ' @6 X8 U" W% C4 H/ |
  6.   location / {4 M/ f! [! Q$ A  W$ c
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    - p$ R0 A, i) C  w5 _2 O6 q
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求# [& x; m% ]6 S; p, i
  9.     proxy_set_header X-Real-IP $remote_addr;" ?9 X) D, r" G" v+ |# B
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;- k4 m+ ~* x0 w1 X* h/ q2 m
  11.   }4 ]# m, g( w9 ?4 e
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
4 S$ h. B$ V5 z8 D% A* _: Y: N2 e' V  f1 R* `- K
将域名转发到另一个域名
+ x- U7 I, m2 n/ S  g  ]5 J
  1. server{0 t# U' S; p) \
  2.   listen 80;
    5 W- i* r7 E+ a( A& c
  3.   server_name  baidu.cncml.com;
    5 Y; t5 W7 ^! J* J) r# W
  4.   index  index.php index.html index.htm;5 u; e, n/ A( M1 k$ w- _, |
  5. 1 s# K4 W1 h( R0 m6 x
  6.   location / {; M& f* D% F4 v
  7.     proxy_pass  http://www.baidu.com;9 x9 b" y$ C& p
  8.     proxy_set_header Host $proxy_host;
    " `! h6 H, n( t1 H
  9.     proxy_set_header X-Real-IP $remote_addr;
    7 K3 V/ q  C8 \; l/ g1 l: K: z2 f
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;; A2 X4 c! ~6 ~( V# ~0 J
  11.   }% Q  I" \" V& H  c3 V; {
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名2 ^) X, Y3 ]0 r" B3 c
  1. server{4 I$ Z: i8 J5 z
  2.   listen 80;
    0 ~4 }2 T+ B0 }9 b1 N/ Q! K
  3.   server_name 127.0.0.1; # 公网ip$ v7 G" E) G- c/ E% P* {
  4.   index  index.php index.html index.htm;0 Y7 d1 f. O% {7 r( ^0 S( f

  5. 8 `8 w' @  S, _& F1 \! q) g
  6.   location / {: e5 z5 Y2 A- m
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    # a* k. V, d8 n2 }0 U* I
  8.     proxy_set_header Host $proxy_host;) Y+ d: L# z0 e/ P( l; z( a
  9.     proxy_set_header X-Real-IP $remote_addr;. R9 z# w: e; h  x5 ]3 G( i
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# k* q6 s$ Y8 A* ^, S7 L
  11.   }* N, _( ~& R4 l9 b, T  F
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com6 B2 l: d- E. y7 z; T: n

- j& z- T+ t; W7 g加 / 与不加 /
' l7 c& A8 G+ s# R& {在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
; X% ]$ w5 a+ D3 ~. D# }
) v' ?8 |5 l/ f+ z- I+ F$ {: x例如
  u2 I+ u: X! _: ]1 T' _- g
9 F) _) P6 B% y* C1 m: j! i加 /) }" f  v) d* H4 X& v. q0 Q. l
  1. server_name cncml.com
    ) o6 s5 y9 q- V# B
  2. location /data/ {
    2 c1 Q- b! V6 l! ~7 b- O
  3. proxy_pass http://127.0.0.1/;7 a3 }( ?; `8 m2 C+ L
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html1 j. b- x& o  M% E# _, Y
" n' N: z/ ^+ r5 u# I8 L3 \! f
不加 /
, T; U- D+ ~% y1 m7 X' s/ ^' z
  1. server_name cncml.com+ f& o5 ~* F1 u+ s1 N
  2. location /data/ {; g% `. l7 l5 h2 j2 F
  3. proxy_pass http://127.0.0.1;; e1 T- v/ D, j( w5 L
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html  ^( j4 x& K4 H1 m5 t
. p+ T" `( |4 ~9 E. y. x
游客,如果您要查看本帖隐藏内容请回复
. V$ C" V( r5 y; s: f2 ^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 10:03 , Processed in 0.162523 second(s), 21 queries .

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