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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发- M  E2 N. {# I" y/ k& Q" T
0 `: t+ I; p3 a6 }
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
/ [1 P4 k* v9 W+ m
- G" z7 |& Z. l5 ]; L/ V7 `# M将域名转发到本地端口
" H* F, X. q' G' h2 f首先介绍最常用的,将域名转发到本地另一个端口上
1 u' M( h- L! F  h
  1. server{
    - F9 q- \# u8 Z$ C
  2.   listen 80;
    . g# c" v2 u4 H# }0 F  ^5 O; T
  3.   server_name  tomcat.cncml.com;9 E/ p+ g+ y, B# p& R! v; ^
  4.   index  index.php index.html index.htm;
    ' ~6 e6 N! D# P7 @$ _

  5. ) v+ r. L  ^% l( z0 x) w
  6.   location / {& N7 R& b) D: R1 o5 J
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则( A! L; `- R! N- c
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求/ `2 J% Y( u6 }: a9 j9 C
  9.     proxy_set_header X-Real-IP $remote_addr;
    ) f4 o8 F! P' T) v2 b& m$ J% Z
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;% {7 o: c6 @# T& t$ T
  11.   }
    1 _  C5 S# o: o
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口/ k0 f! `7 O4 x: F* f! i* v! ?# p5 c. {

0 F4 _% y2 m0 V' V3 n将域名转发到另一个域名
; a' m7 Y; M9 T
  1. server{
    - l4 l/ O. h; I* [' [+ a
  2.   listen 80;
    3 g- h% e) |" `) }* x& i- L
  3.   server_name  baidu.cncml.com;
    " x( q" v5 ?$ D% J- L" n
  4.   index  index.php index.html index.htm;
    3 l" P1 R4 r# p. x, u1 e* o

  5. 0 C9 z' h  z- c6 p0 `5 v3 R% |+ X
  6.   location / {' h& g2 N3 t) L6 v9 o6 B
  7.     proxy_pass  http://www.baidu.com;. j% t- u1 c$ C$ |: x
  8.     proxy_set_header Host $proxy_host;
    * g* `! @7 h9 e0 S6 g" n( o  M
  9.     proxy_set_header X-Real-IP $remote_addr;3 z3 o! Z. x! ~1 ]2 p1 Z1 C
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;* b$ x+ a5 }: ]) W" F: C1 g: b
  11.   }0 J3 o8 x8 K3 x# }, v/ {1 v. K
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名6 G$ W& e8 t4 d( Q* l3 c
  1. server{
    % k  v) J( t# @& F
  2.   listen 80;
    ! W- d5 j: X& S5 ]6 |! c
  3.   server_name 127.0.0.1; # 公网ip  N/ e: e# {, p( f6 Y9 r/ X
  4.   index  index.php index.html index.htm;
    3 u; `) M4 O  q

  5. 8 q1 O; l* Z; T  o5 X' n' V' N
  6.   location / {
      ]: T% o' y8 W+ B
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com6 V5 J% j# g1 f6 N: ~7 z6 x
  8.     proxy_set_header Host $proxy_host;& }7 R8 w' t3 M8 w  l) l6 o& h
  9.     proxy_set_header X-Real-IP $remote_addr;7 o* ~; D0 K, G! |0 Z8 A
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ( h& T9 i: a7 F% d4 l2 b; l
  11.   }8 E0 @6 X; Y8 V9 G' V* |; F
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
9 Y5 p. Q' W0 A0 w; j! }$ p
& [- C( o) C) j' \( ^加 / 与不加 /
( R' i1 N: _6 r  R3 r, ^% Z在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
, [& L* U7 }' [" p# h8 \5 l
7 d/ o/ e9 H9 l/ x例如
  X# i4 Q2 }2 k! M. A3 J6 ^  A
加 /$ j* W: v; z0 O$ R1 h& _. R* ^
  1. server_name cncml.com+ O( g) m! t9 x
  2. location /data/ {
    * g- F  T2 D" e% M
  3. proxy_pass http://127.0.0.1/;/ }4 \. s9 Q4 b' G
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html* F. [% C5 c4 v+ G5 s" j: m& b8 n
4 S- a! q: M0 S$ o
不加 /
9 H) G* Z9 z( i1 K$ \+ H: c- _
  1. server_name cncml.com
    - S8 z  i' E- z
  2. location /data/ {+ P, l- h- [3 d: Q4 y0 x+ C: ?
  3. proxy_pass http://127.0.0.1;  e2 G+ n# t; N% }& D6 e/ o
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html# g' h5 l2 m1 p& U

( u3 [9 Q' u) @6 T! `& u
游客,如果您要查看本帖隐藏内容请回复
* U5 L% L9 R/ z& c" W; V  O6 ^. t9 l
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 21:42 , Processed in 0.127252 second(s), 20 queries .

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