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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
, |$ {6 r6 f( j2 y$ R  e1 V
$ @: N6 W$ h1 T本文中,我们介绍Nginx如何做端口转发,还有各种转发规则7 ?3 L. x" R! N4 ~5 u
" g; s9 z! n; a
将域名转发到本地端口  b9 p6 k8 I* R2 {5 S3 @
首先介绍最常用的,将域名转发到本地另一个端口上
/ a1 J% N, Q1 u& h0 r; G; D/ D
  1. server{& h+ \* m; W8 s. {$ W
  2.   listen 80;# Z2 l4 T8 V# r: @. u/ q; Q
  3.   server_name  tomcat.cncml.com;
    7 i! L+ g6 L4 n, D7 _0 y
  4.   index  index.php index.html index.htm;, W! B% K: W; x3 E5 W0 R- Q

  5. 8 R  x4 M5 h9 j6 K# s. R5 S; F7 D
  6.   location / {
    2 S) n( h" P' x( V7 c
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则  v$ r& O+ _4 B! s: u* s
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求7 T4 ^$ X9 W  J4 y- Y9 ^4 \# R
  9.     proxy_set_header X-Real-IP $remote_addr;
    0 f# V, p& W, H# a% ^
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;8 ]0 r$ P  {4 _, Q* }
  11.   }
    6 A8 |. W& m3 Z. u# e) N' T
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
* S  r4 \+ c% N( O) h5 T
" d) M4 _; c' {% X- D9 c将域名转发到另一个域名" |. m% b, s* I! Q
  1. server{8 ?8 y4 A( K2 L5 k! I/ A8 o, F
  2.   listen 80;- v' d" I1 ]- Z2 J4 J
  3.   server_name  baidu.cncml.com;
    : v! J8 O- e5 g! l
  4.   index  index.php index.html index.htm;- @+ ?  ?- q0 f( E- s
  5. 2 Z* b4 t+ y) X+ g$ `" b( v
  6.   location / {9 ^0 n! [4 G( q/ j9 G- u# o8 M
  7.     proxy_pass  http://www.baidu.com;. h) b; q% j4 W: ]  s: `% I
  8.     proxy_set_header Host $proxy_host;
    * d7 `: q' `$ C- K' [% @3 T
  9.     proxy_set_header X-Real-IP $remote_addr;
    ) D8 b# f$ E% m& k
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    4 e8 b1 \' b. V) ]
  11.   }5 p5 i6 y! H9 ~/ ~! l
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名$ e1 x3 o! E. V! J
  1. server{4 |2 d/ Q9 O+ ?7 U; R
  2.   listen 80;) y, }6 A' f$ ~& @3 O; Y$ X
  3.   server_name 127.0.0.1; # 公网ip
    ( O- B; {3 R/ c' A5 k+ j% t
  4.   index  index.php index.html index.htm;2 l4 ~, @% N; X9 p% x3 y0 h1 w7 p$ i

  5. . d! B( V; t* Q- l: N/ k1 x$ b' m
  6.   location / {
    ; d3 `! D$ V5 h: u8 K$ J
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com1 j1 ]& n" k( E4 _4 T; K! s
  8.     proxy_set_header Host $proxy_host;
    $ j( F( @, j- U
  9.     proxy_set_header X-Real-IP $remote_addr;& P) J# U& E5 ^2 |- f8 D1 q  j
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    & o& Q# q. U) Q8 I
  11.   }
    & I+ X9 u. i- C' G& ^! N8 e
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
& e4 o+ ~, i. U$ t3 T( L8 G/ g* i7 F- M
加 / 与不加 /' [1 l1 R$ b; M$ m7 J# k5 q; v
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径9 x# i+ M$ u. L. r, Z

$ W9 }, ^% I) Z( {" {" f例如
; f1 }; b; d$ R7 Y( U
& T9 h# ~: `( F5 S* e& F4 A加 /
) m7 h8 f- q% R
  1. server_name cncml.com
    7 s6 K; T8 D" T# p% s( l
  2. location /data/ {
    9 z3 m! a0 S( y7 h5 {
  3. proxy_pass http://127.0.0.1/;) [& W, z8 F7 k, @& g. C" L! E% ]
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
2 m  Q; d" T8 E( m7 u
+ d# L. o7 C- i# s* l不加 /: L1 Q7 E! Q. e4 Z: Z4 J
  1. server_name cncml.com
    # c3 j8 e: S! v8 d
  2. location /data/ {
    6 a3 P7 C# b4 s" C
  3. proxy_pass http://127.0.0.1;! V) f8 T1 A$ h  q! @  U
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html- i4 r: t7 E9 w

" F3 w* L9 V& @; l: \
游客,如果您要查看本帖隐藏内容请回复
- J0 U& T+ b% w+ Y( P: W
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 14:44 , Processed in 0.051246 second(s), 20 queries .

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