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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
; k; \( k. X/ L& g2 \+ ]8 H0 k! f7 i6 _! k! |
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则! I; w. g) _# E$ v
; L: L% ~8 N# f& m2 k, X; h
将域名转发到本地端口; d, Q1 s7 `+ U
首先介绍最常用的,将域名转发到本地另一个端口上! `( y9 ?  K. x8 k% v# m, @4 J
  1. server{
    - ~7 c  \1 t8 A4 _5 b& [
  2.   listen 80;
    3 c1 [* f! z% `$ w
  3.   server_name  tomcat.cncml.com;
    4 g  R" I6 v' i2 P2 A6 F
  4.   index  index.php index.html index.htm;
    0 e7 q5 R$ V7 _; z6 l
  5.   q1 o( s# g9 N% H' B! m
  6.   location / {
    3 t! u# ~2 e% ?5 Y2 T# Y
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    1 {7 N6 H3 v& P3 Q! F, |
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    2 J; g. P$ g7 M# F: q
  9.     proxy_set_header X-Real-IP $remote_addr;
    & F* {: b, \& {2 V0 ]# V
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;" l5 T/ n& `3 a- J! v7 V. E
  11.   }
    " g# J' g/ K9 k
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
+ D# t! i4 k6 l; \; g6 R/ c: |: m$ C) @, g
将域名转发到另一个域名
( }2 y  u" I. C% r. n
  1. server{
    0 x; P7 E: W* r- [4 d6 u2 U
  2.   listen 80;+ D, }% k( i" c/ ^
  3.   server_name  baidu.cncml.com;  K2 \0 T5 w6 t: Z8 F% `
  4.   index  index.php index.html index.htm;
    + s! J; J4 o- ?# A6 r5 M

  5. $ Y: F- k8 o- [/ g4 p  ^. E
  6.   location / {
    & N2 a! ?5 z* e5 f
  7.     proxy_pass  http://www.baidu.com;9 {/ H( q/ R4 Q$ z
  8.     proxy_set_header Host $proxy_host;
    2 G* z6 o: R" p9 t- Y/ h' F
  9.     proxy_set_header X-Real-IP $remote_addr;
    1 n4 M! n& l' N" ?7 l2 h
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;8 H( g" ]9 L7 s* J0 w- e; S* s' d
  11.   }
    0 O* k0 L7 ~( Q* f  ~  s
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
. p3 d% [, ~' h
  1. server{
    # R$ M3 I  s* S0 }8 `9 l; N, X% I0 j
  2.   listen 80;
    $ w9 {! k( u8 ^! k
  3.   server_name 127.0.0.1; # 公网ip( o% L6 s" t& o1 S7 [. }
  4.   index  index.php index.html index.htm;& x+ c( g( O' N
  5. 4 T* A6 ?! e+ Z4 T1 B& b  Q6 [
  6.   location / {* {" g$ {, r9 L& e! M1 r
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    % @$ p8 c' B# u5 Y% ?
  8.     proxy_set_header Host $proxy_host;( I- z% H8 A/ ^. u3 Y1 h) P  z
  9.     proxy_set_header X-Real-IP $remote_addr;2 U3 z7 z% e5 e; M6 e
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    $ B3 x$ R+ Q4 I2 u
  11.   }" f6 ^2 A0 o! i! U5 C- b
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com4 v) w$ o# e# B) J* J: I
+ R9 [: m  M# X5 v
加 / 与不加 /! g2 ^" `1 ^' p  @' c
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径: [3 I! m* c0 h# Z. x
  u& D4 H5 `7 j! `4 S
例如
9 d( m1 F' d0 S0 n
" o, F: d$ H. l" d& k加 /
& j) t$ S4 x' E
  1. server_name cncml.com" V" }! i; M* N% H$ v
  2. location /data/ {. h& C8 b* Y7 }3 k' d* @
  3. proxy_pass http://127.0.0.1/;3 g4 ]6 L, ?. J
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
/ }9 ]  u2 w( a1 X/ w: F5 E1 e. W4 B2 Z6 R1 Y( s
不加 /0 p0 O! m5 @" v2 |; K7 i  P* Z
  1. server_name cncml.com
    # Z6 V6 A1 o# q3 t2 A
  2. location /data/ {
    ' f, p1 a4 O& ], j+ @8 @6 c5 i
  3. proxy_pass http://127.0.0.1;' u0 s. Z, ?8 q4 u2 l
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
& S' j6 ]5 o% P- {5 K! ]
. Q4 s: `! z; N+ W. G
游客,如果您要查看本帖隐藏内容请回复

  Z; s- F4 g2 v. }. I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 11:00 , Processed in 0.064428 second(s), 20 queries .

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