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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
) m0 E2 ?2 D5 J0 x" ^4 q8 g9 M' C, i$ ?9 Q2 l
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则* f/ I# b0 b/ ~1 N* s* z
: X4 q; F+ G' l* l4 u
将域名转发到本地端口/ X) e! j* U9 q. G* f& G# m
首先介绍最常用的,将域名转发到本地另一个端口上
6 V6 T$ Y2 R( S' A, r* u, [( o/ x
  1. server{8 B) z  B0 I0 v9 R" }
  2.   listen 80;! t6 p$ d1 `+ o# D7 n& I  a% u; }
  3.   server_name  tomcat.cncml.com;
    # c1 \$ K: H1 O" @
  4.   index  index.php index.html index.htm;5 u/ D; W, K& A9 V4 ~/ j- ?
  5. , d+ L3 U: z, i) Z+ b/ x& p
  6.   location / {
    0 X5 x( g, H( S5 ~* d) c6 ^- G, R+ W
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    " |1 u4 |) h$ t
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    : T. J. R+ l$ ?/ w
  9.     proxy_set_header X-Real-IP $remote_addr;
    1 q) @! p$ O" `4 ?
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    $ g- r% b& Q5 N& T8 ^: C- s
  11.   }' z8 p7 z0 H% P* V& H# |+ T
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
: w; d; V" s6 B( [2 K' _
9 S$ q; G9 p- a+ K3 }' h将域名转发到另一个域名
) |4 c7 J4 }; p! x3 Z6 C# P5 X5 ~/ L
  1. server{/ L) Q6 _. t" O+ \8 M# O
  2.   listen 80;
    % [$ K0 b+ [% Q3 M& h5 e
  3.   server_name  baidu.cncml.com;! M# n5 w" w2 W. {% n' Z
  4.   index  index.php index.html index.htm;1 X* I4 t$ K8 r/ u' J
  5. ' T7 N  W3 S) A" d
  6.   location / {1 o* J4 Q5 f/ W5 ^/ ]* t
  7.     proxy_pass  http://www.baidu.com;
    6 }& r. a9 ?7 Y* h! I; ^$ N1 {/ R, @
  8.     proxy_set_header Host $proxy_host;
    $ M- F: K4 ^3 I- `/ a2 C
  9.     proxy_set_header X-Real-IP $remote_addr;
    # f6 j% d) X  Y! R: b
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    : R) W5 c% ~9 `$ ]3 h6 V, {
  11.   }
    4 |+ r4 V7 S' M, P/ D3 [
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名! G5 K8 u+ E0 M4 {
  1. server{
    * L' Y, G1 i# u7 _6 Z
  2.   listen 80;
    8 w; l- z3 s- |) Q3 v  W. h
  3.   server_name 127.0.0.1; # 公网ip0 ]; i* @/ D. P1 V8 I9 u
  4.   index  index.php index.html index.htm;
    ! r7 y/ [8 q) k% I# |, w

  5. : ~' Q% w3 B* M) i! B/ b
  6.   location / {
    1 t. ~4 T3 s% D3 N- k1 _3 B/ J, O' S
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
      X- f& @3 Z, A$ ], ^, q+ K" _# n
  8.     proxy_set_header Host $proxy_host;0 _; D% D; t$ G( @) Y/ t- Q4 o2 C
  9.     proxy_set_header X-Real-IP $remote_addr;* A( s1 r; N) j& k4 o8 J2 ^( m
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;: W! U) A5 q$ Y' t6 O7 N8 |* {$ ]
  11.   }
    0 D- H+ T0 V: @, W; r- {9 |6 }6 e! U
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
1 m5 k. b' C0 x) n9 d1 R
% m* W  \! G1 [- j加 / 与不加 /$ d$ }$ q" i2 |1 {7 i  t  Q: V
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径4 M2 h- K) L0 X

2 |' k6 m1 p  U" a& |( B例如
9 q/ Q4 e: W8 P3 I& W6 O) M
! |. v5 O  y  Q" i1 z加 /! d& h0 g# @6 z' H, b- w( n$ G& J; q8 k
  1. server_name cncml.com0 i2 z: u& K3 u, X* I/ T: O
  2. location /data/ {
    " l, f2 A9 T- p; ?, D9 w7 n
  3. proxy_pass http://127.0.0.1/;- ~  n& v* r$ d; M
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html3 I3 E+ \- H' |2 z! c: E  a

2 w& [, `/ p. C1 @9 ]不加 /
8 J% H. m& z! r2 M% Z0 F
  1. server_name cncml.com* E" N" a9 K9 Y! l7 L, J
  2. location /data/ {
    2 G; A+ R. y# ~- r- o
  3. proxy_pass http://127.0.0.1;( e3 n' N8 W1 ?* K
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
. ^5 Y% Q8 Z/ X2 }. j0 \
" H; d8 V, u# U
游客,如果您要查看本帖隐藏内容请回复
: t9 L& @6 ^  w) L# l3 g
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 04:47 , Processed in 0.047713 second(s), 19 queries .

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