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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发5 d3 y: k; _* K- I9 n0 M5 D7 N; v& g

' X- n7 r& T  l0 V9 H& Y' [本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
( f9 x* B' m6 r. M) V7 ^0 G' a- \6 G: U; q7 T7 W8 d0 k' ~
将域名转发到本地端口9 e# J4 u* K  c! I1 q( \9 x6 Y' ~
首先介绍最常用的,将域名转发到本地另一个端口上
0 F) ]5 F3 i, {. y6 b+ L
  1. server{2 v& ?7 Q! K$ ?) G0 b6 o
  2.   listen 80;+ j" ~- L8 S* L! p* W! G
  3.   server_name  tomcat.cncml.com;" `2 |6 L+ W' H: J& u9 j5 G
  4.   index  index.php index.html index.htm;4 |: W8 f! E; d
  5. ( m5 \0 @! V3 S) H, A/ E4 J/ _
  6.   location / {
      o3 D/ ?4 C2 }) }( n
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则: B" N$ e  F! t* w& l7 p. j
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    1 v9 y1 A2 E: n# ?
  9.     proxy_set_header X-Real-IP $remote_addr;$ n7 D7 T3 u0 `+ {& ?# e2 G
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;4 j7 Y8 i: x" t6 M
  11.   }" _1 |, i( S6 A
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
# G. O% a2 V5 N3 r3 g* Z' B6 |( }. f7 _
将域名转发到另一个域名9 `0 ~7 E+ |! |3 S1 M& T$ |3 S
  1. server{) t- O& ]. C* V7 y3 U
  2.   listen 80;3 {0 c! h" Y) g7 D2 q4 R: q
  3.   server_name  baidu.cncml.com;
      {9 N, L/ T- W9 ~) K( U
  4.   index  index.php index.html index.htm;- k  h/ w' h. |, }* O

  5. , Z3 T. G8 F" {
  6.   location / {
    " \! C1 u4 O. _. k+ b6 `* C  A
  7.     proxy_pass  http://www.baidu.com;
    ( c* N  }+ {2 o* \. e& l: Q
  8.     proxy_set_header Host $proxy_host;* \7 X3 i) x. z; b# m0 Q9 o, v& J& s
  9.     proxy_set_header X-Real-IP $remote_addr;
    7 L* s  z; B8 W. `; |( ?& A- G! A
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      @9 g- x; q3 l. }% W
  11.   }
    ; m, U; q! ~& t& o# V1 E
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
* s; K/ c. ^- v  H* M1 F
  1. server{4 ^0 y8 f+ o8 T" o5 O+ b. X
  2.   listen 80;; n  v' z! H/ X$ L6 a
  3.   server_name 127.0.0.1; # 公网ip2 S$ p7 Q  [; l5 Q" p; v% l; m" E
  4.   index  index.php index.html index.htm;2 R; Q8 [0 \5 W9 O0 b% X
  5. 3 j( @- \; \7 _* ~/ \
  6.   location / {
    * v" `' m6 t  m
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com* n( \& s& S0 o2 k/ A
  8.     proxy_set_header Host $proxy_host;
    8 E/ K4 K$ a9 J! Q& ]: L4 N
  9.     proxy_set_header X-Real-IP $remote_addr;
    6 ]1 `8 \; ^, h6 C0 ~
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;! T) f) n# V  f- Q# l
  11.   }
    ' W/ {$ |% X* z) O+ {
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com. H  Q; t; U( i6 p
* r3 A2 K( I5 h' x
加 / 与不加 /
& _2 |; I' H$ B, ~" K在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径) u% o& [/ b# u$ M1 j6 M0 Z7 L

4 j+ J& ]: H5 z( f1 L4 Z& C例如& P( V! Z$ y' O9 N
+ _' _& r4 F( A2 O! w- z
加 /
4 w+ O% O% {1 L2 {7 k, K+ G% u/ B* U
  1. server_name cncml.com/ r9 L0 q8 C3 l4 ~- L
  2. location /data/ {
    * F3 Z7 g2 k& e3 I/ X7 L
  3. proxy_pass http://127.0.0.1/;* o5 N% x& f! ]
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
, C  f6 v' n. y* e  c# W7 S$ W) P
- ?1 `7 t$ O8 V1 x5 L/ W5 X不加 /1 T: x2 {( H6 P2 O; w. @
  1. server_name cncml.com$ K, |, m% g1 T
  2. location /data/ {
    ) a/ t4 Q1 }( U& x: o- S
  3. proxy_pass http://127.0.0.1;; k* x5 A( D5 R% `& s
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
. x0 G- v6 n0 b4 e5 y* I; p& w) n* Z) l0 }4 ~+ L) F6 e) K, X! w
游客,如果您要查看本帖隐藏内容请回复

/ @0 t, T$ I5 y  ~/ `  Y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 10:54 , Processed in 0.053053 second(s), 20 queries .

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