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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
2 P% @2 }$ ]$ l) g! o0 S1 \
9 Y( q2 K2 Q# F# e1 _) U  @$ A本文中,我们介绍Nginx如何做端口转发,还有各种转发规则( C  H' p! T* _# t; ^

  P& V# c7 y# P" f( ~将域名转发到本地端口
6 W# R1 E$ \% {! y0 `" d首先介绍最常用的,将域名转发到本地另一个端口上4 Q# K4 |+ T8 E  S( Y& W: m
  1. server{0 {6 d* |4 m, _/ U7 I2 @4 _! ~
  2.   listen 80;  {' f& v$ w( k$ F; p1 W6 Q% n
  3.   server_name  tomcat.cncml.com;5 Y. y! ]' f5 ~/ ?/ o
  4.   index  index.php index.html index.htm;
    7 [; |5 b- v% w/ h# M7 i* ]# c

  5. & a/ O: z$ Q6 P; X* v& t4 }1 U
  6.   location / {1 o) k5 e3 k! g% s" x. }, t
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则9 x- n; y7 X9 x
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    5 |1 W( |7 D! r7 J" r: D' i0 A4 E
  9.     proxy_set_header X-Real-IP $remote_addr;
    1 D7 F' r9 W# J( i+ x
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    / L' b; J0 a( }+ P$ a& K7 j
  11.   }
    : d' G- D0 t9 |/ B% a
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
+ D: U; [' B6 j3 N2 e  [
3 |% [: b9 F# ^& {7 f3 o3 w将域名转发到另一个域名
* l- `& g+ g& t) C5 R% ^7 m
  1. server{
    ) Z8 b5 J- p5 P# k$ T& j$ j  ]
  2.   listen 80;
    5 O, V1 T3 V; D) m9 |5 X
  3.   server_name  baidu.cncml.com;
    1 u  ]( {5 D# T3 g/ }
  4.   index  index.php index.html index.htm;8 u" {" d, P6 |! ?' D* G# m

  5. 3 L) X' i% D7 H1 m
  6.   location / {, u9 H* h, W1 m* j3 q$ \
  7.     proxy_pass  http://www.baidu.com;9 p- R& S  W9 d# h) m6 n
  8.     proxy_set_header Host $proxy_host;) x$ l1 }: Q7 U1 [) |
  9.     proxy_set_header X-Real-IP $remote_addr;9 F- `7 R* T$ c3 }4 S6 @4 v! B
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;0 {9 J5 q+ A3 S5 n9 I
  11.   }
    * D2 x! D% V/ {& M
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名# G: k' X  y- e/ k; B  E5 S
  1. server{) k) G$ C  v* h3 {6 e. @/ v( j
  2.   listen 80;
    : p: V+ V+ n( ?) C/ N: g; N; E
  3.   server_name 127.0.0.1; # 公网ip# u! R  n& T- q+ N! Z% V+ ^4 Z
  4.   index  index.php index.html index.htm;
    , u2 p% a7 X2 y2 }& X

  5. 3 `% a$ H4 i5 h2 J! v" Y
  6.   location / {
    5 K/ w6 L1 z% J1 @' G" R0 q* ]
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    8 S. ?) k! U5 G/ g
  8.     proxy_set_header Host $proxy_host;% q- G6 v( a5 v0 o& U
  9.     proxy_set_header X-Real-IP $remote_addr;
    2 _, u( k7 _4 o* o
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    8 z& R5 A7 S: O( I+ n# d7 [- e
  11.   }
    # N; ^9 f4 w+ b9 W" t: e7 `: O
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
" G) V8 _4 ]' j9 c/ R0 }
3 i% S& {, p2 x3 C+ ]9 v" v- J加 / 与不加 /8 L% ^5 ~2 s4 l# y! \
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径( I7 p7 G1 F# l2 \5 F4 E; b5 K
% }" r6 |: j- B* W) d/ k  ^+ t
例如* a4 ?& x4 y' i  W, ]+ W2 h

& V$ _3 }5 P) g& e% j/ T5 p加 /
8 P- k$ Q+ X0 w5 h& F2 {! F
  1. server_name cncml.com
    4 E% A$ M9 N) b- s5 u' N
  2. location /data/ {* @$ d- D6 z1 w2 H0 t) S7 s1 k- g
  3. proxy_pass http://127.0.0.1/;
    ! ^& ^% v  t( P. `/ W) d: W& Y
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
& C* }1 O# v. x0 V$ G) M1 f+ Q( ]3 U9 x
不加 /
& B( a: D, d2 d) `2 J; D3 Y; A
  1. server_name cncml.com$ O+ s1 Z9 m6 c# [
  2. location /data/ {/ B+ x! \, q  L7 e
  3. proxy_pass http://127.0.0.1;! {) E9 E. L$ G# ~/ p5 w
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html/ V6 n1 G" H; K
, V# q9 F6 g! H  R
游客,如果您要查看本帖隐藏内容请回复
6 d; E5 e! {- m
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-6 21:57 , Processed in 0.151407 second(s), 22 queries .

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