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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发: z! ~8 l; R, U1 O4 v) D$ ^- }

  U" C; h! [! a- \, P! L7 V本文中,我们介绍Nginx如何做端口转发,还有各种转发规则* a8 R2 W9 f  G  w6 X5 @
; l$ e6 X+ ]2 m! `, m1 _
将域名转发到本地端口% k1 i% z6 {# t
首先介绍最常用的,将域名转发到本地另一个端口上* j( ~+ R% H; U% H& G
  1. server{; _1 t" H; r% x( O+ T4 h  L
  2.   listen 80;8 d- b) R' X, g8 m& x
  3.   server_name  tomcat.cncml.com;
    2 R' I' y9 x. m; H0 b: \
  4.   index  index.php index.html index.htm;
    2 J5 S, k* s: L2 a/ f
  5. 4 o6 l5 o# D  N
  6.   location / {* s  z- K  m. k: k
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    ! H# F: q& F7 A9 [+ D
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    * c9 S' g1 o# w* d: l+ W* p, U
  9.     proxy_set_header X-Real-IP $remote_addr;2 m) w. ^! B9 i6 |
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  Q9 X5 Y; m2 Q2 S  F% t
  11.   }  s: i& V9 \5 o3 r
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口0 g; B7 u# u3 d) H6 e

9 s1 @& u* f" ^7 F9 x将域名转发到另一个域名
& I+ _  g+ ^0 P0 x. f8 ?
  1. server{1 j* D* I# p7 Q! @! w$ I7 W
  2.   listen 80;* v5 O5 @, W# J& z9 Z
  3.   server_name  baidu.cncml.com;
    ; T' v5 _9 P2 l. Y" t8 z! E" u
  4.   index  index.php index.html index.htm;0 B' _% u1 I+ L1 P, k

  5. " \  y2 D" ^0 \* [
  6.   location / {& a+ u7 d! C, f( v
  7.     proxy_pass  http://www.baidu.com;# [( [; h+ W. {& R+ p
  8.     proxy_set_header Host $proxy_host;
    & q$ C' X' U$ U6 `5 X) w
  9.     proxy_set_header X-Real-IP $remote_addr;5 v: d/ ]; J% g; G# m; T/ g
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    5 e1 O/ O4 q. S7 m4 G  k& `
  11.   }. k0 W; q. l7 ~5 o! v8 D
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
6 Q) v9 X- p$ |/ B
  1. server{& `9 t! Q  Q% ]  G1 _
  2.   listen 80;
    : W& g' L, z1 O, {$ G) I$ B
  3.   server_name 127.0.0.1; # 公网ip6 i2 `# ~7 ?1 Z
  4.   index  index.php index.html index.htm;
    1 ~2 y; R7 T; \/ a' N  M
  5. , P; d8 K0 J; d1 |6 R- W2 `
  6.   location / {* h& W* M7 g2 ?2 B. j1 }4 d7 b
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com6 C& C' }4 p& r$ J; e
  8.     proxy_set_header Host $proxy_host;: s! p3 D1 r; y
  9.     proxy_set_header X-Real-IP $remote_addr;; \- o. U* d# y) ]
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;. r5 C- {- I8 `( j
  11.   }
    & _' O% q/ W; x, O. Q9 x* l
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
6 A' V% W; a( k9 }7 A/ h8 a
' F3 L, z0 z/ y5 _5 i3 w1 ]5 P加 / 与不加 /7 ?. l/ d( Q/ Z# [9 A) V; I
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径2 M9 f: W) c# L% _- e1 I8 H

3 j; Z, U% B' t8 `3 J/ U例如
2 g: z+ a# i6 n; B3 a; O; L0 Y; K; Y( d& w
加 /0 n' A) ]% ^8 K0 D. g
  1. server_name cncml.com0 t6 m  c0 z* \- M- b) ~4 r; v
  2. location /data/ {
    ) b* X# D. Z) z. P
  3. proxy_pass http://127.0.0.1/;; T9 V0 d; K$ x/ A+ b; l
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html2 W1 ^8 `/ T) ~- y% a

6 ~& `7 {3 G4 M5 m不加 /3 y- a: y% n/ e8 L/ H
  1. server_name cncml.com
    ; C# M( {6 S4 N7 b- d# z% l
  2. location /data/ {! S% I  @* z3 h  d1 B, Q
  3. proxy_pass http://127.0.0.1;: W+ k* i+ @) t  H( k' C
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
. z' B+ @# Y6 s
2 I' ]: F5 i9 |: {. y3 Y
游客,如果您要查看本帖隐藏内容请回复

4 c; T! F8 I" H6 b* R( n
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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