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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
# S& a5 |1 T0 a: d- F8 r
# T: t9 \- A4 q2 }2 g! g; F0 p本文中,我们介绍Nginx如何做端口转发,还有各种转发规则0 b/ Q1 Y+ ?+ i) c  E

5 M$ d/ `$ J& r) b将域名转发到本地端口
( }  B$ V7 v. b* L4 i. T首先介绍最常用的,将域名转发到本地另一个端口上
. Q8 q1 O2 _+ w: v
  1. server{. b9 k  Q6 B" p* k0 x
  2.   listen 80;
    ! m9 K3 \: K: `* T, J
  3.   server_name  tomcat.cncml.com;
    9 X7 a4 V1 S6 c  T$ z
  4.   index  index.php index.html index.htm;
    & c4 r2 m; {2 j" P

  5. 6 f( `% ~, p( K/ u9 D
  6.   location / {
    4 l. J, m! w# H4 ?5 |* l% ]
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    ) I& e5 T3 F$ v4 G8 g2 K2 t
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    : a$ Z7 u/ y, u+ z% c* ]  C) \) y
  9.     proxy_set_header X-Real-IP $remote_addr;
    . `* [$ K" v2 W0 q% S
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;4 b, {/ l- d, |4 _
  11.   }9 r/ }2 `) V4 r, t% M! E
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
9 s0 Z7 ]" Y& s4 {) S- o  y& {
将域名转发到另一个域名$ r2 t  e! G! W; Q# ^
  1. server{
      U( |' Q9 Z+ r' a1 z3 V5 Z
  2.   listen 80;
    " E; i( |8 n) n5 v* F2 K
  3.   server_name  baidu.cncml.com;* y# h  R1 ^7 D) u
  4.   index  index.php index.html index.htm;3 r5 A+ X9 D% W( a4 \2 q& x: P& k

  5. ; U* _4 F9 r: j3 |
  6.   location / {# j% q$ u7 r2 v& i
  7.     proxy_pass  http://www.baidu.com;: O3 u% R* a* r7 B* O, T
  8.     proxy_set_header Host $proxy_host;
    2 Z. a% x7 U$ A1 I
  9.     proxy_set_header X-Real-IP $remote_addr;' g( \4 s2 c. X2 \* B
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ; p) J& q& o0 d4 x9 F+ [
  11.   }
    $ o+ _: F% K2 t, [6 R! d. Y2 R7 M
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名9 e" l% V0 {! n3 `1 |' y; P# }4 O+ F
  1. server{5 r' q& q' t& `( {  W3 p
  2.   listen 80;
    " x0 }0 R! r- w) n
  3.   server_name 127.0.0.1; # 公网ip* Z2 w  G! T( C$ T  j( V  r& D; ~9 E
  4.   index  index.php index.html index.htm;4 f; y6 e" W; S9 ^1 o+ k9 ^+ D
  5. 2 [7 \- l# c  {0 q$ u  ^& a1 f
  6.   location / {
    7 l  O# q+ T/ j/ T* f! T& P
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com* s$ F+ ?9 |7 O+ e# `
  8.     proxy_set_header Host $proxy_host;
    8 x# L2 l1 ~+ [0 V; B
  9.     proxy_set_header X-Real-IP $remote_addr;( @! m" X- ^5 |8 T+ A- g
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    * Y* n1 j* B$ v# u; ~; C  d
  11.   }: ?" W5 _2 l+ @% j
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com' ?5 i$ y7 y! K0 W3 B
: A: _: [; b% H  `
加 / 与不加 /. z6 h" m1 g0 }) S
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径  y# Q* f/ g! L  [# z

" @9 ^" R9 K) h( [8 z0 n: w' y例如2 ]; x* x/ W, T3 C. ^: y' C, r3 H
' T7 _* G" h4 D6 H
加 /& ]3 H+ `: P/ j  c
  1. server_name cncml.com* R% W' j" B; W2 Y7 f2 `
  2. location /data/ {
    1 I2 M- m" v: W4 E
  3. proxy_pass http://127.0.0.1/;
    8 X/ O4 s0 ]3 a; r# Q8 T
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html, D" A- o5 e% @, s5 b
7 E4 O. ^# y$ z
不加 /
* n, ?" a7 s- C+ E0 w
  1. server_name cncml.com: m3 @  G  `9 b3 s6 n' n( x. V
  2. location /data/ {. G- E2 h7 |* E, y- n" B
  3. proxy_pass http://127.0.0.1;
    - z' s3 }# N  l. p0 ^; k
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html% o& f) B* p7 j, B" U5 {

( \- ~% h. H' Q. g5 [
游客,如果您要查看本帖隐藏内容请回复
" g3 F4 E" o% u
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 16:48 , Processed in 0.119198 second(s), 20 queries .

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