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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
& x; D5 {# ^! L% g3 C
. `' i' ]- `' p% j本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
* C# p+ A; Q, O% O1 P9 H5 I2 |! `+ r7 e6 F2 m+ L& m1 `
将域名转发到本地端口  B2 n' G; [; c. A
首先介绍最常用的,将域名转发到本地另一个端口上
& M8 y; Q, X+ t
  1. server{
    ) N# G; |) X3 l) }0 Q  t2 b
  2.   listen 80;7 J" ~+ K0 y: J3 H; Y
  3.   server_name  tomcat.cncml.com;
    % e0 G. K  n+ ^% {
  4.   index  index.php index.html index.htm;
    ! S/ g+ A( O' Y/ t  w

  5. ( P& f  }$ R1 B
  6.   location / {( f- u3 A) E% O2 ~/ ~/ {/ Z
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则9 H9 S+ q6 n2 D- B+ U! c4 p/ D6 P
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    5 f: v  V  l8 b  L; M, v. T
  9.     proxy_set_header X-Real-IP $remote_addr;
    & x, b3 ~* I  w% G0 A, J3 f; f4 _
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;$ @3 P) _& J8 ]/ F9 ~$ N+ G: V
  11.   }
    4 f" w1 d) ?& o" e
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口. g. {. p1 j4 T

. l( Y: U6 }0 b7 A! x2 b将域名转发到另一个域名
8 C( j/ X! j2 S+ D/ {
  1. server{3 `& w6 J2 M+ G! P6 {* I
  2.   listen 80;& g9 d0 r, q( L( c- T
  3.   server_name  baidu.cncml.com;; T7 t  ^8 Z1 [# ?. g  ?, n
  4.   index  index.php index.html index.htm;
    6 Z3 g3 E% i$ v: f, R

  5. " ?1 O) c: C- D. e. B
  6.   location / {
    4 D+ A* f$ W; S1 B
  7.     proxy_pass  http://www.baidu.com;
    , V5 w! N& p, M: w
  8.     proxy_set_header Host $proxy_host;
    - v8 K) @; C4 O
  9.     proxy_set_header X-Real-IP $remote_addr;
      u1 B. @2 k0 `" i& M  K
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    " |  s$ G! T# _, K
  11.   }6 h* B- U% L) N9 W4 S
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
. r1 r* }9 a/ z$ c/ D( p- {- ?. ?
  1. server{
    + d( ^$ g" b6 }# ~
  2.   listen 80;5 l, U% I! T# h8 G( `. v
  3.   server_name 127.0.0.1; # 公网ip/ A9 Y3 [' [0 W. G  `$ ^! Q
  4.   index  index.php index.html index.htm;
    9 ~' }+ r2 D) v1 a% {

  5. ! g( @2 [9 W: {1 q/ Z
  6.   location / {& J/ X7 g) N" j
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com  b8 x7 K/ k, a. O
  8.     proxy_set_header Host $proxy_host;
    6 _; ]5 _* r( s& ^. z1 \& J0 R
  9.     proxy_set_header X-Real-IP $remote_addr;/ v2 l, k1 @; L/ M+ Y# Q8 h/ t
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;( N- {' x6 \, N+ V& \
  11.   }
    ( S6 N, @$ h4 N; d+ f
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com* a$ B+ {3 x7 x: \! o/ R

0 m8 d/ U9 ]# x9 a% ]4 i加 / 与不加 /6 T' l  ]) S7 C( ?7 L
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
6 `! Y8 \2 V. ]; M% s/ S6 j7 G. R; s) S5 S7 t
例如
! ^. Y! y, {  S9 e1 D2 l3 s& f* F+ S# K
加 /7 i; r. @  H' p9 I
  1. server_name cncml.com% t* l0 b8 o: U9 X; s7 x
  2. location /data/ {5 X7 c# }: Z6 t8 Z3 @& b& r- }4 {
  3. proxy_pass http://127.0.0.1/;. }3 n% W8 K# {! A9 `. J" ~; N+ ?
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
; M: s: w7 d7 K. G
9 q! t. a9 T- R* `不加 /
3 m3 y9 Q5 Q. q' Q1 t
  1. server_name cncml.com
    5 x/ z- [; @, P5 e- d" G
  2. location /data/ {6 Y# X) @- |: R5 H! Q
  3. proxy_pass http://127.0.0.1;  m) Y: ?& y4 A/ V
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
6 W5 L7 u. I  A: ^2 Y  A  i9 X+ x: V! }; B. \. }. p
游客,如果您要查看本帖隐藏内容请回复
2 e+ o( K% [) |  _5 d7 D* Q* s
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 15:03 , Processed in 0.070455 second(s), 22 queries .

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