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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发3 z  S, A+ t- p+ k0 _4 N
* Q) T, J. M8 ~8 U
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则1 E( K5 L% r7 T* M8 N

& c3 n/ s% b" ^5 i将域名转发到本地端口
( J5 t* q* l/ ~' }; l* B: ~首先介绍最常用的,将域名转发到本地另一个端口上9 H' _9 [; @6 C3 ]) M5 ]
  1. server{% ^6 L7 G9 R) w! a, G3 k  P. g  J
  2.   listen 80;# A! l! |8 d" R$ \) C/ g
  3.   server_name  tomcat.cncml.com;0 k7 k' g3 F* |
  4.   index  index.php index.html index.htm;- B, r5 k0 ~3 N* Q- ?
  5. # w: H' R9 q- K1 X
  6.   location / {; r+ F; [2 c. n, v/ I5 v
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则; W3 e4 E4 K. R: F! x
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求! d7 P9 m2 k! a( G9 q' G
  9.     proxy_set_header X-Real-IP $remote_addr;
    5 B1 B. ]9 R; Z$ \% z3 r! N
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;; g% K! Q% z- v; o! D
  11.   }
    ; c# H# i+ Y" e. |4 p4 j: Z
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口& p( R, y3 N8 }$ H0 \. J6 x' h. \
! v1 k* g& C5 k* c' I
将域名转发到另一个域名
$ G! Z5 z6 q' c2 n8 b
  1. server{
    ! j0 {  b4 ]% |, ?) Z* s
  2.   listen 80;
    8 H/ e) ?7 p* a; I
  3.   server_name  baidu.cncml.com;! h( i. V' \5 l# p) C/ j4 D  M+ `
  4.   index  index.php index.html index.htm;
    2 q( @# |* }. G6 ~4 A

  5. ( n' V* h+ I7 {+ |% z! i
  6.   location / {8 t* x# }# G$ V
  7.     proxy_pass  http://www.baidu.com;
    $ Y$ R. e+ e5 e: c7 z/ A  T
  8.     proxy_set_header Host $proxy_host;" i# i8 L4 ^0 M) k9 h0 C3 J" t
  9.     proxy_set_header X-Real-IP $remote_addr;
    ) K! m+ k2 s0 Z0 b" W6 J5 {
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;1 L6 s& w0 {6 n3 H- z
  11.   }3 z& M0 ~  H, S* J% s. y) Z
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
  S9 @9 x2 @9 c1 y
  1. server{8 E+ H( {! a' t4 O+ F5 }  n
  2.   listen 80;
    ! A# I8 R' A+ u+ m, y
  3.   server_name 127.0.0.1; # 公网ip9 k) v9 h1 e0 R" i: j
  4.   index  index.php index.html index.htm;: d" n" w0 z( m4 \% _: b
  5. " X& U' i& G* J; w  |# L
  6.   location / {
    9 N/ K# h( c+ t4 _; W5 F0 n
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com% e9 g! e$ o! u: E! k
  8.     proxy_set_header Host $proxy_host;
    . m  \0 V) [" Y
  9.     proxy_set_header X-Real-IP $remote_addr;
    3 g4 Q5 f9 `# ~5 |5 E( I/ X
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    : e) @3 {' F8 U9 a- ~( n5 S
  11.   }0 {/ X  P3 d' g# b. ~1 W8 o
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com; e4 W8 _7 ]1 D  D
! q: U+ M" B- ~& n1 p- o
加 / 与不加 /
  w; {! ^, a5 |/ @+ r) }7 J在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径, p; ^0 B2 [; K. D2 D1 u
- X5 ?% E9 _4 s$ j. B
例如2 i& P* r; v4 C0 z( k

$ g0 `7 P' j: a8 C9 w加 /& z9 x" _: b4 @  N7 ~- H
  1. server_name cncml.com
    ! m) i: w% r. J; l8 X* ~0 E  v
  2. location /data/ {
    3 a' J) ?* }. q. Q" H7 m: W
  3. proxy_pass http://127.0.0.1/;
    . V* w3 _9 W, v2 m" F
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
* R* o7 d  T4 ]/ |) ^" h& @! @
. n, g9 s7 j# s$ G不加 /
: }$ C2 K) w2 J1 ^/ |6 J
  1. server_name cncml.com
    - O0 |8 d5 M# c  _. ~5 A
  2. location /data/ {- M" k+ M2 c/ i. S: i) g
  3. proxy_pass http://127.0.0.1;
    0 Y" q+ D7 d' _! T6 f; Y
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
  v" M2 F6 h2 K0 Z3 m7 ?+ f; T$ B- R5 B  F/ E
游客,如果您要查看本帖隐藏内容请回复

4 y4 v, g7 \& D9 \/ y$ k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 21:43 , Processed in 0.061675 second(s), 20 queries .

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