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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

8 c" V- T. x. _4 J1 g) t: E  h: x  L本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
3 ]9 d+ |8 }& ^6 e( O! M) D) W4 n
将域名转发到本地端口
7 f9 m, u2 b) O% U5 i- m0 W首先介绍最常用的,将域名转发到本地另一个端口上
# l& G# q! h$ @5 E; B0 }2 }  d, h
  1. server{
    3 c6 d* h4 r, w2 b# w  T$ _$ y
  2.   listen 80;
    ( T/ ?& O! x* O# o/ z& y5 s
  3.   server_name  tomcat.cncml.com;4 O' ]7 f( G0 ~
  4.   index  index.php index.html index.htm;
    $ }* }9 z  ^+ B/ ~  s% P* K1 L

  5. 5 L" S/ w3 u, D3 t, I  X
  6.   location / {! A" r# N  R% q7 J1 ?( L0 ^
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则( x" E1 ~7 C- ^; S  |
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求6 w4 K+ ^8 q: Q4 J$ b' B; w" {
  9.     proxy_set_header X-Real-IP $remote_addr;
    2 {2 G, P# f9 C* ^! q
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;2 s0 ^8 f2 k) I; ?& z4 X: h" Y
  11.   }# K5 I7 I1 S5 S% d4 J7 q
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口5 q! y1 J) R  q) v

1 A* x- h: q1 X5 |. J; n将域名转发到另一个域名# ^+ v3 _7 H3 p: M
  1. server{
    / q* D* f8 c6 E
  2.   listen 80;5 S' L! j" b% P
  3.   server_name  baidu.cncml.com;
    5 _( n) K0 T7 u' u; @
  4.   index  index.php index.html index.htm;
    $ I8 R# G8 T! u+ _( W

  5. ( z- s6 X  B9 j( Q+ w! V
  6.   location / {
    6 S6 ]4 f5 D# D# e5 g
  7.     proxy_pass  http://www.baidu.com;
    : H6 \: v  ^0 _9 {7 q
  8.     proxy_set_header Host $proxy_host;
    6 Y9 P0 M6 Z& _; J7 g
  9.     proxy_set_header X-Real-IP $remote_addr;
    2 O' h. Y( u! E# c6 c
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    4 r! u( ]$ h4 x( h' h  ~& J
  11.   }  R' R! ^( ^, q/ o$ p
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
/ t& n2 K/ B! ]
  1. server{
    9 W3 o0 |( G+ I& \9 O5 ~) ~! u
  2.   listen 80;
    : x$ O$ ?, Q0 Q* [- K
  3.   server_name 127.0.0.1; # 公网ip
    7 O7 T) I0 _- k" N* t5 t/ ~7 \# F
  4.   index  index.php index.html index.htm;
    & I/ \+ k5 y- O9 j+ \' C
  5. 2 `( l. ~. Y2 u- a1 B
  6.   location / {
    ! j$ E6 q- d$ A# J; _% k0 j
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    0 M; T6 y& Q- _) X" T
  8.     proxy_set_header Host $proxy_host;
    6 i9 I: ?* T1 [; L5 j
  9.     proxy_set_header X-Real-IP $remote_addr;# C$ V; |- Y9 q0 o- j
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    1 r! q6 \3 P. A9 l6 r6 V/ v8 Y
  11.   }0 S# s5 S  L4 j+ C
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
# s) [4 o. m6 \3 q$ C/ Z" C' q! E1 i& L0 j7 v/ ~, H
加 / 与不加 /
) }' }+ ^; ]6 @; e在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
4 H- D1 n- Q0 C' }3 x) N) Q9 K+ W9 c& g2 k( b  w9 i+ o6 R% s: o
例如
9 f( v& _- X' m
% ]4 C' Z" {; V5 @9 u% }加 /5 W7 A! n/ K, r7 g8 M
  1. server_name cncml.com  d9 v+ G- k+ l- G" C9 ~% y
  2. location /data/ {& u5 m* f/ q* \% [% u/ B
  3. proxy_pass http://127.0.0.1/;- q' ?* q2 i0 j. D" t( y6 A4 {
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
) R1 t9 h; ?" T& j) {
3 q& R: z( ~5 s' F3 f7 m不加 /2 e$ `) U2 |7 ^% Z6 M- o
  1. server_name cncml.com( T3 W; V  Q; [
  2. location /data/ {
    1 l! }1 @- B6 ^+ C: {
  3. proxy_pass http://127.0.0.1;" x0 D5 Y, S: o1 R1 ?: X
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html7 o- l, l/ a9 p" u( A; x8 k
) u0 `+ f$ I9 n; |# C
游客,如果您要查看本帖隐藏内容请回复
3 D( D* w6 l$ q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-6 08:35 , Processed in 0.143295 second(s), 19 queries .

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