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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发2 G6 u$ F) ]1 T7 U4 B/ {0 ?6 D0 p

" e  j9 \* o( W) a4 L* m本文中,我们介绍Nginx如何做端口转发,还有各种转发规则. f) d0 H9 h( D

* m7 B. r( `" u+ p$ a1 @* S3 B将域名转发到本地端口
) o3 T6 U3 x/ n, I2 M3 k首先介绍最常用的,将域名转发到本地另一个端口上" ]7 b8 K8 R6 ^* C3 Y3 z" T/ t
  1. server{
    9 h7 \4 k; O: }1 m  }& e6 L% w
  2.   listen 80;
    * n7 X. U) `8 M* A  K
  3.   server_name  tomcat.cncml.com;2 T  t6 p/ `/ G
  4.   index  index.php index.html index.htm;- u( A. L4 ~, l1 ]- m# w3 F
  5. 6 v( V" C* J, R5 h% }3 P
  6.   location / {
    . u- ?' ]8 @8 ?! B3 ~* f
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    . B7 F* q# P( B% f
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求- W6 i% k1 |( E+ B/ a
  9.     proxy_set_header X-Real-IP $remote_addr;* j! a6 a: _5 C
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# l. s- G8 c0 V" J( d- d
  11.   }/ C* x; }* W4 k
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
+ E9 N1 p4 k; ]: }% v( l$ o8 t( O
" o  R3 J8 B: `1 [, I将域名转发到另一个域名0 d3 F2 O- \  F2 T
  1. server{1 ]1 y4 R! {/ w  \& y
  2.   listen 80;* @) z* }1 H$ r! Q: z0 ?
  3.   server_name  baidu.cncml.com;
    ) @/ R' n, T6 c
  4.   index  index.php index.html index.htm;
    7 X- j2 ?8 G9 l/ _( u$ {
  5. ' [! r( s! C& r* K" C# m" Y
  6.   location / {
    3 |! U8 l: A* z  s8 E+ W
  7.     proxy_pass  http://www.baidu.com;
    - ~+ M, }. y2 F) d( C
  8.     proxy_set_header Host $proxy_host;) K& \  D9 a2 y% i0 @3 w
  9.     proxy_set_header X-Real-IP $remote_addr;
    ( J- E2 E7 ~4 ~9 K
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;' C" w$ y; z$ }$ q" d# S; q) {* q
  11.   }
    8 k$ E3 A& B$ D/ t1 A
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名8 [) V. `  M! M, Q9 S- K
  1. server{
    $ P: ]5 f; O1 g3 ]+ i
  2.   listen 80;
    $ \' Q) @# J' Q9 B6 ]0 i6 v8 [4 K
  3.   server_name 127.0.0.1; # 公网ip8 h+ H/ ^/ O; M0 J& s
  4.   index  index.php index.html index.htm;% p6 u" @- z8 f4 E9 B
  5. 3 v7 N9 _/ i/ Q, a
  6.   location / {
    ' |# g: d/ N  L" {6 Z
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    ) C2 ~9 S, c3 I3 {2 a6 Z* U
  8.     proxy_set_header Host $proxy_host;
    1 K' Y4 j9 T5 v' I7 }) N8 L- N. `
  9.     proxy_set_header X-Real-IP $remote_addr;% t4 [1 F8 J0 s
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;! ~; m+ i* o( C, N4 n1 S
  11.   }
    . T3 i! t. E5 ~( }1 Q5 C
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com" s4 A6 j) H5 w
1 H( _7 h! `7 ?* h
加 / 与不加 /
' }3 B4 u; {( H) q; v. M5 F在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
, _/ `6 }6 y: {
" l( G  E/ X/ v; O1 p% W例如7 h. @! N! N+ h

) I6 x! ?% B! a/ ^加 /
1 u/ F8 r; T) C& L/ z( D
  1. server_name cncml.com7 P' j% g3 c$ x: n, J
  2. location /data/ {
    - [& Y- P5 y' i2 \+ F) A# ?6 h
  3. proxy_pass http://127.0.0.1/;. H  D4 Q$ j: L6 Z" h: p
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
, M- E- Q1 w! O- o7 h* P4 Q, j4 u6 a% S* J1 ^- J. F
不加 /3 b3 \' l- d6 ?
  1. server_name cncml.com
    5 k; d) p  R8 w8 {- f- S
  2. location /data/ {
    / W( l7 z) `# v  c8 b
  3. proxy_pass http://127.0.0.1;
    ( s) [4 |" s- L  f& C0 h) f
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
0 q+ @8 C( R: ]# b5 ^! I* @5 e0 ]. P  T1 p, Q/ q% ]# m2 l
游客,如果您要查看本帖隐藏内容请回复
* \7 M* `/ E; K5 h6 O. k* [1 L
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 03:44 , Processed in 0.062167 second(s), 21 queries .

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