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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发% x/ w8 j* h% p4 i  b
9 N% X1 ]' s/ J- m
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
& C$ P, s# P8 \8 x$ G1 P
$ j) a5 m7 O% O将域名转发到本地端口
: n' e- t8 x9 o- U4 z0 c首先介绍最常用的,将域名转发到本地另一个端口上& K1 ?) b- k) j' @* }
  1. server{
    2 |7 Q& o, A& N8 O9 ]- `: @
  2.   listen 80;
    8 _0 t: k0 {# w# ~& A# ~
  3.   server_name  tomcat.cncml.com;
    * |, R( e7 ?) ]2 p, n
  4.   index  index.php index.html index.htm;. L" l+ |7 o7 \- w

  5. " w) d; N9 d7 c! I; x; P
  6.   location / {
    ( Z  O" P" `  j' v0 S$ ~# V
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则: m, v: c6 H' ]  A
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    7 Y/ _" ^" ]# K5 J
  9.     proxy_set_header X-Real-IP $remote_addr;
    : d, P8 }  z. I" F, C
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ; J% Z3 F4 [# [3 e
  11.   }
    $ O+ ?# \* B. s" m8 ?
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口6 T) ]% D# G4 j8 _
. F$ i2 e) b  r, S0 k
将域名转发到另一个域名0 J  f+ J% p" B4 X0 ?
  1. server{' {7 f+ L% C8 `
  2.   listen 80;2 D) |( D1 v2 q, S1 f+ L. H
  3.   server_name  baidu.cncml.com;! w0 J4 y4 a4 a/ a
  4.   index  index.php index.html index.htm;# }( y9 b8 B/ }4 J; B6 d

  5. $ [* P' N3 l3 h1 ], t! w" B
  6.   location / {1 `& q% g1 `; W% \
  7.     proxy_pass  http://www.baidu.com;
    0 R, t# v8 u" r7 g
  8.     proxy_set_header Host $proxy_host;& b# {3 A7 ~* q/ B8 g
  9.     proxy_set_header X-Real-IP $remote_addr;
    " j. y( v, {8 A4 [3 P, Q& B9 i" g
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    - t2 j1 t; j# z
  11.   }# h2 {$ j, ^) A8 w; |
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
! O5 A+ p$ _7 E: r
  1. server{
    6 L* c$ w6 g" S/ Q: X, s
  2.   listen 80;
    ( R2 }0 n0 W2 P. L: T
  3.   server_name 127.0.0.1; # 公网ip
    - r) Z( F' p* x& m. s0 ^/ z
  4.   index  index.php index.html index.htm;3 V3 L+ |! T/ A" F0 O& W
  5. $ s1 y! L" t6 v5 m& {3 R! ^
  6.   location / {+ R' m1 @: F# v+ l; v, c* M: T
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    ! S, ~; C7 C: D% w" Z$ P
  8.     proxy_set_header Host $proxy_host;8 I9 z* u/ P: ?( U8 e
  9.     proxy_set_header X-Real-IP $remote_addr;6 l4 s+ _& ]3 o! ]
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;1 h7 i2 g) h& ^" \/ E  A
  11.   }7 I* i- @3 N, A. F) A6 q; [
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
  l3 ]2 C4 F1 l0 ~7 H  T5 Q: e
& a: ^2 ]) J7 z: z加 / 与不加 /' ]3 m8 V3 L! l8 _- J
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径' l4 Z  z6 [+ F5 j5 }3 Z+ O# w' l/ G
8 `/ t) T0 L. _+ p3 s2 z2 v0 f
例如( B4 o+ P0 H& c) H- m( {: M2 V/ r
/ y2 V$ C- _' ]( A! R; N
加 /3 g: W/ [8 p) N- a
  1. server_name cncml.com0 G3 z: m# ~" ~. O/ T8 N9 T: F4 f
  2. location /data/ {
    2 [% s! r* \7 t( E) G7 U
  3. proxy_pass http://127.0.0.1/;
    % O+ j( X* ^# S9 M& o
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html9 K% o1 x7 O' B- C  P: J. L

* o$ u* i! u! p+ n# m不加 /
0 w4 ?; G2 \+ ]% s$ [0 M' w" K
  1. server_name cncml.com
    . ?- ]0 d4 t$ G* Y( j
  2. location /data/ {
    " F8 ?2 D( p3 A
  3. proxy_pass http://127.0.0.1;
    8 Z' \8 [  b8 p  l# Q
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html' K% U+ c7 L7 H# R; D  z8 }: k6 r
, p7 u0 f' s* ~7 i) F* x, @
游客,如果您要查看本帖隐藏内容请回复
* w! v5 a- g- @; R
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-19 20:35 , Processed in 0.136399 second(s), 19 queries .

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