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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
! `9 K; M0 s, \0 z/ A) A3 C) B! `6 `# Q
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
) l# [2 n, c+ A5 i9 \/ N; X7 n# q# K  k) Z5 M% c( ^
将域名转发到本地端口
8 U! H# _( N7 l. A4 L$ L& W  Z首先介绍最常用的,将域名转发到本地另一个端口上
6 t3 `4 ^% j; ^" l# T% |' p, |
  1. server{+ M: W7 k& I0 J0 _9 C, e/ `7 G
  2.   listen 80;
    6 O% A7 U1 p. A. |# f0 g
  3.   server_name  tomcat.cncml.com;
    6 Z0 B3 T( J. u; n
  4.   index  index.php index.html index.htm;
    2 P: E: n0 r, Q; y6 B) ~& b! r
  5. 4 W, z( z0 v9 _
  6.   location / {  H3 T  X  f) |8 k+ G* ]
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则. }. a& e/ v( l5 f( D. L
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求' z' P8 t* H; A0 T
  9.     proxy_set_header X-Real-IP $remote_addr;
    + l5 ]. m# a6 P6 t8 L
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    - f- ~- P% A1 }: Z: o% h' b* j
  11.   }* g; M; X3 d6 ~
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口/ S5 J) ]3 I+ o% e$ ~9 E
7 y1 a( P$ @6 _, n" k
将域名转发到另一个域名
. A- T& W- [4 J7 @6 H% {, A
  1. server{
    5 }, K6 S3 A! z
  2.   listen 80;
    3 u1 g3 @* r- z' F- M' N
  3.   server_name  baidu.cncml.com;
    - @( R% l- R5 U& E; d+ Q
  4.   index  index.php index.html index.htm;
    ' q' ?# o' [5 l$ q2 S# V& b8 N

  5. % G. I& p$ J& N5 }  x
  6.   location / {
    6 b* J. U0 K% E; P  c2 D9 f+ O
  7.     proxy_pass  http://www.baidu.com;! y- c( X) n0 ^% w& [
  8.     proxy_set_header Host $proxy_host;
    * n/ t0 g  m8 L9 _2 q
  9.     proxy_set_header X-Real-IP $remote_addr;) q8 x5 |: P; f4 ]/ b9 M4 A- g
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    % e8 c. b8 a* l8 Z! S1 S+ {
  11.   }. P, ~$ U: }- i; O: m- F0 T
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名9 o; W2 C7 T3 s2 Y- t
  1. server{
    ' A8 i: t" [: W- r( ?
  2.   listen 80;; K( l4 S; K" w: j
  3.   server_name 127.0.0.1; # 公网ip! Z! T8 \5 ~- N. L0 }
  4.   index  index.php index.html index.htm;7 S6 V( {5 j! L# @4 v0 D4 n2 O
  5. ' ]4 L- f, F# R4 c2 \$ t! N
  6.   location / {
    - k7 F# x$ X2 f1 A
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    ' E! V# f! o, `- f. p/ f
  8.     proxy_set_header Host $proxy_host;! s  I% G9 Y- P( {' x. z9 w
  9.     proxy_set_header X-Real-IP $remote_addr;& F# T7 A! \+ {. |3 m& K2 |
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  C8 K: z" A8 M3 P- I) Q
  11.   }6 Q& O5 n# g8 Y
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
8 T) _2 R. _* @1 }; {5 m  s: t/ |! d0 i6 b& G+ w1 S
加 / 与不加 /
+ r% ?- [' k+ L; F; O在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
) m( y' `( a  M* d
& q& h( }- {1 W# M! q例如8 X' ^+ z& ?6 P% w1 d
- K# X) [( P; P; M( F5 q- d
加 /
+ ?8 H" e9 O9 E1 h$ w' P
  1. server_name cncml.com
    6 H, j9 U1 r. j- |( T
  2. location /data/ {3 t  e/ L8 ^( g& V
  3. proxy_pass http://127.0.0.1/;
    . g& k* K; m2 I) b2 `
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html' H: f  M. R+ |; o, u% W/ ^) ^8 @

! T/ v$ O9 s* N0 ?8 \& L不加 /( W! ?; I4 ~! o& {/ _
  1. server_name cncml.com( h" u7 j  x  x4 w1 _8 ^8 C" g
  2. location /data/ {; z: A; W$ z  I- o: C
  3. proxy_pass http://127.0.0.1;; m$ Q& A$ k+ ~( b
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
. N/ N3 Q9 u$ M
& \. n. t2 w7 Q
游客,如果您要查看本帖隐藏内容请回复

- g9 ]+ x6 t# Y$ M, s4 U* Z$ x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 14:46 , Processed in 0.109302 second(s), 21 queries .

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