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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发' F8 U% T$ o7 W' q
* H8 b8 f: C* e$ F) c
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则* S: j' @; |" _6 X8 k( ~

7 M! b: N0 \4 H- ~& l$ @将域名转发到本地端口" _: z4 P4 H$ W
首先介绍最常用的,将域名转发到本地另一个端口上
6 Q9 T9 G# M! d& v
  1. server{
    2 ^* Z# n. k0 r9 D5 H5 W+ s( L) ^
  2.   listen 80;4 ?' t1 u5 v  S: |7 w. ^
  3.   server_name  tomcat.cncml.com;
    ! w8 U# f4 _/ D# }. T1 m5 A+ f
  4.   index  index.php index.html index.htm;% c- l8 s# s; b
  5. 7 B2 F5 G2 U. B( }' y) c
  6.   location / {! P, f/ d3 X1 c* N: L9 y
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则* c1 z# h( a( }5 D
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求* A4 g7 E, a( h& `3 C
  9.     proxy_set_header X-Real-IP $remote_addr;4 Q' W4 }; x! S3 D. q2 e# f! e* r, G
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    6 U" o3 ?+ p, n1 P. t; ~1 _5 O
  11.   }: ^4 c  L# W/ d
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
6 f9 U$ M" J6 v- r  B5 L$ b6 b
! P' o4 B' d  C将域名转发到另一个域名
' T7 p$ C% Q1 Q/ P
  1. server{
    & v' m5 r' c" o
  2.   listen 80;
    3 p- _& u" l9 M& _* I, P) U4 U
  3.   server_name  baidu.cncml.com;
    7 v& Q) y6 a& A
  4.   index  index.php index.html index.htm;  J$ w3 @! i0 I

  5. ; t6 _7 l4 ~0 ]3 W& ^+ w' N: z
  6.   location / {
    : x2 p6 N( u! o' k) \/ `2 K
  7.     proxy_pass  http://www.baidu.com;/ w( n1 b' g7 b& ?0 @& i
  8.     proxy_set_header Host $proxy_host;5 y* L5 ~* \( e6 |$ V; {
  9.     proxy_set_header X-Real-IP $remote_addr;4 o( ?6 H9 d7 j
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    # y4 g) A7 U0 m$ g$ u1 a; I/ z2 B
  11.   }" Q) S: O3 J# D5 h0 z7 L" w
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名# F7 _8 x' |) Y
  1. server{
    # B7 Y7 j  [. q; W( i, f4 I
  2.   listen 80;
    . M( K2 X  @& p5 E& w' {$ X6 M
  3.   server_name 127.0.0.1; # 公网ip1 m, o' X  Z8 \2 q0 q
  4.   index  index.php index.html index.htm;
    1 J3 y- V1 X# J2 X8 q0 m5 n
  5.   f, z8 G; r3 k/ \
  6.   location / {
    ! `6 I4 }  o! T( R8 ^
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    2 n3 Q( p. N+ X9 e2 s2 e0 R1 u; A
  8.     proxy_set_header Host $proxy_host;% m/ F- ?/ W4 z
  9.     proxy_set_header X-Real-IP $remote_addr;
    + Z9 w, x# R4 b8 d  f* P
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ; s" E; k! x1 K4 U7 e
  11.   }. [9 r! m/ @6 B$ b
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com9 |& L- b5 h5 t/ e+ ^) U

- G! d1 X& \, a* D5 |加 / 与不加 /
# I1 D0 [, f6 g0 D+ j在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径0 v; c, q1 t6 G* c, r0 U
4 U2 v+ ^3 @; h. d: r
例如$ L( M7 h4 ?7 Z# D; G
8 f% h5 ^1 z: `1 c+ J
加 /' E! I4 m9 g6 ]" z) ]; w) x  Y
  1. server_name cncml.com* B3 W1 V' c9 o. F6 D& P
  2. location /data/ {
    # g& ?0 ]# o0 R3 [* W& ~
  3. proxy_pass http://127.0.0.1/;3 E' n3 q2 a$ A9 j
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html( C1 D+ n/ N5 t* y
  {* e5 A4 q4 Q7 i4 [0 f& c. u1 q
不加 /
# w9 x" r% k$ |' _! ~! }9 H
  1. server_name cncml.com
    . b& M; T$ {( r+ l- v
  2. location /data/ {2 p* q, j4 F5 ~' i
  3. proxy_pass http://127.0.0.1;, R: S* v0 D' X! M' e, ]% e
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html3 r& I+ \7 {2 i% u8 c$ O' Q
: b9 h; [! @* |$ C: p" i$ O
游客,如果您要查看本帖隐藏内容请回复
/ K, W2 S( q; e/ ]9 u
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 12:58 , Processed in 0.056588 second(s), 19 queries .

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