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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
; V/ e' t3 w8 n! J4 W
7 G/ a5 G, m) \2 W6 ^' e- ~" D本文中,我们介绍Nginx如何做端口转发,还有各种转发规则+ }$ G) S: J" o% x# y+ ^' _/ I

- T2 I* e* ~( h  s+ g将域名转发到本地端口
: j: j5 h0 C/ k首先介绍最常用的,将域名转发到本地另一个端口上* b! G0 y# o& Q. U: G4 g
  1. server{8 d, Q4 O: J# B
  2.   listen 80;
    4 x# V5 O" K3 F
  3.   server_name  tomcat.cncml.com;
    7 c: s5 `$ v2 F& G. c- t/ d
  4.   index  index.php index.html index.htm;
    6 |* l$ c' a) o9 C; q: ~) j: R
  5. + _7 h4 A3 [7 W: A5 t5 y, {! X+ r
  6.   location / {
    * O/ D: }5 E7 H" _1 @2 H
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    2 o, J4 F6 A! ]. C! q
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    , B9 m* C- d% G0 V- k2 {
  9.     proxy_set_header X-Real-IP $remote_addr;' P- n( D& q, m$ T  v
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ( k( z- B2 I+ w. r. H
  11.   }
    ; e9 U6 j: l0 m" d  B  Z
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
5 p) `9 `# n% f" o$ m. `
1 ^' f7 U; X) W# H& @2 G, j6 m/ r将域名转发到另一个域名
9 [" b0 S  Q! j  Z. g5 i
  1. server{* N  E: N. Z3 A9 x( r5 R  {/ j' {+ b
  2.   listen 80;
    / ?* x: S& T, f+ H7 j
  3.   server_name  baidu.cncml.com;0 ]0 ~9 s4 |- z. R' C. q
  4.   index  index.php index.html index.htm;
    5 }( Y3 g2 e# a

  5. 3 H; }: |+ f2 k! k  Y+ ]8 ?
  6.   location / {) w* O3 _7 j- J
  7.     proxy_pass  http://www.baidu.com;
    ; C! P7 z. R6 v0 x) ~* V/ m
  8.     proxy_set_header Host $proxy_host;
    9 {/ o2 M# z! W8 ~
  9.     proxy_set_header X-Real-IP $remote_addr;4 a7 C! Y( R6 m7 Y1 ?
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;/ Z7 U! y. h1 z. ?6 @
  11.   }6 C- n* l: g8 K' F9 W2 S. O
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
* `8 Y% Q3 z; d; D; L3 d# {( P( L2 S7 ]! i
  1. server{( B1 M3 Y1 e* x8 w: p4 \- R
  2.   listen 80;% S/ a9 q" l* G0 i" ?2 |
  3.   server_name 127.0.0.1; # 公网ip' L0 o% M. k, J  k) n5 ^1 z
  4.   index  index.php index.html index.htm;
    * y6 o: ]" Z/ g
  5. 2 C: B9 y8 j# u/ U
  6.   location / {
    & N  Z7 w) j" A  o
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    " f2 b! b0 X% P3 O; l
  8.     proxy_set_header Host $proxy_host;
    - [: V8 O% b: C3 C# o6 y
  9.     proxy_set_header X-Real-IP $remote_addr;
    3 k8 m' {! \/ d% V
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;, {* R' {) u  t& y
  11.   }
    ( W( N. o& y8 k% j0 b( `  r4 u" t
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
2 j! p1 v/ x2 e
7 e& |( }; s4 b6 M) t. F* q加 / 与不加 /
) x! ?  P/ H; e在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径7 m$ z5 s. \" {& [

# i! N  ^1 T/ _( r5 e例如' m; r: t, O/ A2 J/ A& Z
9 y' k( o" T7 F9 |$ u
加 /
8 y* @" v" g8 r, _7 O
  1. server_name cncml.com
    4 J9 K8 r, G9 ]2 j6 F
  2. location /data/ {6 M  T+ h1 r: @2 p! k' Z; c
  3. proxy_pass http://127.0.0.1/;
    % o+ @0 r7 l8 \! f: D1 K
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
" @* [; O8 Z  _7 [
. p! l* B$ V  {$ I不加 /
% s! x  g# C  L
  1. server_name cncml.com
    7 ^5 t$ \' ~9 f2 i( |5 E( x. {
  2. location /data/ {- b& L1 I9 g" `# j7 x
  3. proxy_pass http://127.0.0.1;' a/ r* I& \% W+ C
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
" s4 {: h3 D. f' }4 |* A
) C" S6 |7 F5 h; y
游客,如果您要查看本帖隐藏内容请回复
& Y2 e* g* h  O7 ]8 X6 Z1 [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 14:45 , Processed in 0.053749 second(s), 19 queries .

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