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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发$ T8 O/ K8 e' \4 ~

, n, K) I, x, `, p. e本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
/ L9 o6 D6 }* J! y0 j: i6 G
4 G4 ]( u7 H, j" J/ z$ N, U9 U: n4 |将域名转发到本地端口5 V( E4 F3 G* ~) {
首先介绍最常用的,将域名转发到本地另一个端口上
' \/ R3 E- A$ a% N2 B* r
  1. server{
    8 `! Q, \1 M& y3 G# Z% C
  2.   listen 80;
    , ~' p  w: C* N. q0 j! J7 X
  3.   server_name  tomcat.cncml.com;
    , ]! d; u" E  `6 s
  4.   index  index.php index.html index.htm;# r; j. p. _5 D4 a2 [! s
  5. * L4 n& c# v' X, H: O
  6.   location / {
    % n% j4 F+ I3 s+ {
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    , G- N% M( \6 @5 C
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求6 w& O* ^) R. d+ l" j) s
  9.     proxy_set_header X-Real-IP $remote_addr;* z4 ?, j. D$ ~! Z
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;9 y, u/ a- }1 F, ]
  11.   }+ d+ d" K8 h3 k" @$ Z3 z5 |
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口0 C/ l; @1 A* Z8 _. \

. S" Q1 l1 n' N将域名转发到另一个域名$ T/ L9 I$ g1 R. t2 O/ G
  1. server{, ?, d) ^5 Z$ D: t- Z2 V
  2.   listen 80;8 ]2 }+ |( X) k: l0 d
  3.   server_name  baidu.cncml.com;0 R" [8 p* ~: i, r
  4.   index  index.php index.html index.htm;, D0 t# W# D3 A# e$ K

  5. 4 r0 }% e# I+ [2 u0 ]% m
  6.   location / {4 T9 M7 J; ~; v+ j  C: |) L% y% K
  7.     proxy_pass  http://www.baidu.com;+ ]5 t" i$ C: ~- T0 p" t2 ~1 ?
  8.     proxy_set_header Host $proxy_host;: x" Z. o! N" r
  9.     proxy_set_header X-Real-IP $remote_addr;
    3 S2 T* w# m& o6 [- P2 w5 ~2 _+ {6 e" p
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;. Y( B, i1 u2 x0 K$ [% H1 @
  11.   }
    8 l; {2 u( ]% |$ ^. }/ z% f
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
2 F: }7 r6 c) N$ z! n! y% E
  1. server{) \7 ~# g0 D* G- t% J) z  K
  2.   listen 80;
    * c5 L) t2 m5 t& e8 E! C, k
  3.   server_name 127.0.0.1; # 公网ip
      e' F  l& H9 h# t- x. m
  4.   index  index.php index.html index.htm;
    1 j& D2 L2 K- f/ ~8 p8 y" l. f: p. n( E. A
  5. 3 b" @+ Z" V- s! ^6 x8 h
  6.   location / {$ a& \/ D" Q6 z: s' H( w/ W! F8 V  Z
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com) o2 D, j" ?$ L& t
  8.     proxy_set_header Host $proxy_host;
    8 A; y# K2 Z* `) }3 G
  9.     proxy_set_header X-Real-IP $remote_addr;
    7 ?7 h) c5 Y2 ?; |$ x/ ~; f* D) n
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;5 d% R4 X3 J3 ?% a# _) v) T
  11.   }
    / R& M8 R. l( ^: O, ]( }
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
8 D7 p3 _, S4 |' E' e/ [% J6 z3 C
% b* N: ?4 Y1 [, @8 A) ^0 l: q2 ~4 d加 / 与不加 /
& ]. g; Y6 |! k7 C; t2 f2 r" y在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径) \5 G4 G+ ]8 F& M" j- R2 z

3 u( r5 O4 t0 A8 o0 f8 r4 f例如# A  u) T" j7 E7 @3 X( X7 B6 c4 w0 r

' z( W- m8 H6 t* c9 |加 /
. ?" O' \$ G# C  _: B/ A
  1. server_name cncml.com
    $ n8 a7 [  X: B
  2. location /data/ {
      Q/ v$ F5 Q* d
  3. proxy_pass http://127.0.0.1/;8 ?5 X" p; j' v1 g; `6 I0 T5 j
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
% c6 B5 B! X2 ?- J  b- E6 x( d
不加 /2 X  R  j+ @7 W% f* ~- D
  1. server_name cncml.com. g% z0 l- w6 I' h" r; R( t% F
  2. location /data/ {7 o% U3 Q, H$ h' B7 i$ C
  3. proxy_pass http://127.0.0.1;
    * p0 n9 j: F. A) a( R& w
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html4 s0 T& U) T9 H) S3 u& z

1 B! |/ V: \( z' T; {* R
游客,如果您要查看本帖隐藏内容请回复

+ r/ j+ y* x4 ^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 03:15 , Processed in 0.067520 second(s), 20 queries .

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