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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
0 N. X5 X2 c, h1 N4 f5 q# F# x( b1 z2 Y
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
% h3 I8 x/ S/ \. e) a' K: E6 K, G- U6 `7 r4 C9 H
将域名转发到本地端口
3 r! [& G8 B$ g% t9 l* ~首先介绍最常用的,将域名转发到本地另一个端口上
7 v/ {' N  V1 _  F& G& U3 f) B
  1. server{% p# w  L+ n1 @
  2.   listen 80;# S( w6 r3 q2 t
  3.   server_name  tomcat.cncml.com;
    $ D: C5 T  H: H- @8 Q' G
  4.   index  index.php index.html index.htm;1 r& D1 X, N* W/ L5 G/ I% k
  5. ! T, K+ c8 G! V5 d
  6.   location / {/ ~# X; `" ~; C9 W8 h* Q
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    3 P! C0 p5 j4 R2 K
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求& m$ n3 g$ I, O. Y- w- T
  9.     proxy_set_header X-Real-IP $remote_addr;
    1 [  {; O. T3 b, n$ U/ Z( Q) e
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    2 x6 _; w: l" v$ S+ p6 a5 c
  11.   }
    * F3 \! ?% f4 J: e" b
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
: t$ E8 E! z4 w6 Z6 M. m) D) Q) o5 l
. v* j' p. a; T, [3 a: R! q将域名转发到另一个域名
2 ^$ D% v: r3 u
  1. server{% K) m/ y9 I: @
  2.   listen 80;
    * \4 h) t& M1 O; R6 K3 p
  3.   server_name  baidu.cncml.com;, y+ o# d$ J: m, N; v$ N3 {
  4.   index  index.php index.html index.htm;9 a- r: H# Y: f- W+ k2 r

  5. ! e5 ^4 g* o( t0 }9 @, f9 w$ [* A
  6.   location / {
    ' y1 a. F3 |$ B4 M. {5 Y0 F
  7.     proxy_pass  http://www.baidu.com;
    ; f2 i' c) G$ {; j" _
  8.     proxy_set_header Host $proxy_host;
    ; y( l, L+ @% ]$ `) I" A3 \
  9.     proxy_set_header X-Real-IP $remote_addr;3 L' x) F. O( A2 L8 c; g& E1 b
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    0 k" y- l9 G) \- e: _) n
  11.   }% ~. I/ N: m4 z3 i
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名( B% i+ ~7 ^6 I0 `+ p5 X; Y5 o
  1. server{% r9 i3 C! P) y* u& U$ t
  2.   listen 80;. d$ {' K  C% ^4 ~  S5 k8 S
  3.   server_name 127.0.0.1; # 公网ip6 M, H# _" D% j/ K' |) e3 W8 o* I! p1 d
  4.   index  index.php index.html index.htm;. k1 Q4 p4 f6 u9 n# I7 B/ m

  5. 4 D4 S6 D( L( Q2 \% v. }# S
  6.   location / {
    ; W0 d$ V9 N* z$ K* a& _' c0 H, P
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    5 Q# r& J/ I- z7 r6 n
  8.     proxy_set_header Host $proxy_host;
    ' }5 l( U2 z5 I( O* t! K$ q
  9.     proxy_set_header X-Real-IP $remote_addr;! B7 K' c% f8 r& {
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;6 i4 i3 p5 x( @: I" i6 B
  11.   }6 X) `7 g; P: K- X
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
; K& B( P# A. u# R7 r: K
2 V$ }' C% H5 Y加 / 与不加 /# j9 v8 b* v. V* Y6 s0 {3 J4 n* L
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径8 n' c" j& E  X9 e8 \8 M$ a
& |4 X/ L: m. x, D4 d
例如$ j: p4 [/ h" i! {2 X% j3 `5 H
: p' i* i8 A# _+ [( r. l. o
加 /
0 H9 x% q) ~9 I. ^/ M
  1. server_name cncml.com
    9 F' _1 y" `0 w  i7 Q9 M
  2. location /data/ {
    & V; p& h; x( |# A* k# b! Y* S
  3. proxy_pass http://127.0.0.1/;2 q0 m" x; ~% m4 V, [
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
4 j# ]% b% {! t# v: a; B2 t! ?
6 d6 Z" ]6 u3 @不加 /! c6 ~4 Y3 Z5 n" O2 \
  1. server_name cncml.com
    2 O3 `- s. x7 i( J9 Y
  2. location /data/ {2 K3 Z9 E5 I* b4 U
  3. proxy_pass http://127.0.0.1;6 T) d" z, m; V
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html0 x  g  \9 b4 i! L' k( `) }

* c' d! P# |+ n; f6 w
游客,如果您要查看本帖隐藏内容请回复
! X" s7 y7 i9 N' {7 [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-19 13:46 , Processed in 0.122840 second(s), 19 queries .

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