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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
2 B$ P3 M! n" T. v; }
) O; V% w8 T) [/ N8 }0 w1 ?. r本文中,我们介绍Nginx如何做端口转发,还有各种转发规则! p. y) o- I$ ^- d/ R0 a
# I* U- z: G! ~# L6 s2 f
将域名转发到本地端口
( [+ m  X1 H& @- r2 |! H首先介绍最常用的,将域名转发到本地另一个端口上
' r( Q) `3 @0 F: g) _
  1. server{( Q+ C$ @* p7 A8 ]9 _5 A. W3 L1 w, [7 O
  2.   listen 80;2 L4 G  ?* O1 `  G. q" N/ d
  3.   server_name  tomcat.cncml.com;
    ( T7 y; }8 m% f$ [5 d4 M
  4.   index  index.php index.html index.htm;
    ) w+ R' X6 e: S9 z" a$ [

  5. , r3 \: b: B3 j: p
  6.   location / {
    , y4 H* r7 q5 n) Q! f9 l  G* l
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    9 L! ^! r* [7 l2 D( _  `! |0 P, K
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求% V# [8 V! q! N& F+ w$ W
  9.     proxy_set_header X-Real-IP $remote_addr;& j% N4 K  ~. U$ n; p) W: f
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    * M1 ^/ T8 `. G# M+ N  c5 y& M
  11.   }
    . ]! y$ u* b- J2 D
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
9 x$ {; j$ W5 P# E4 E. v+ I. u1 b9 }" F9 A
将域名转发到另一个域名
7 _" `& H  r, J  M9 a: Z& V5 e
  1. server{
    - G* ?6 \3 q" y. x
  2.   listen 80;
    - f( e! q2 p- e2 y
  3.   server_name  baidu.cncml.com;
    ; j+ ~9 c5 W9 ~3 ?- U, M
  4.   index  index.php index.html index.htm;
    , M6 M) |: t- W- K- q: E, e
  5. : V! I% \* _- c* e  E6 x9 c3 q0 M
  6.   location / {
    : |% K9 d! [+ S
  7.     proxy_pass  http://www.baidu.com;
    7 f0 ^; y8 O; W8 t' @3 \/ Q
  8.     proxy_set_header Host $proxy_host;
    " j, j+ t# o' @" Q6 |: r* ?7 M
  9.     proxy_set_header X-Real-IP $remote_addr;+ s5 X2 _2 `$ s
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    # P( B6 b$ v' V' ]; f8 }
  11.   }
    0 L3 D; C2 U# ?9 e
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
# [+ b+ a8 M' k- P- s: P: d! t0 H
  1. server{
    . x" g5 u/ t( B* h9 G
  2.   listen 80;
    8 B* ~, u0 S, }  G
  3.   server_name 127.0.0.1; # 公网ip* w7 u* b8 }1 P) n
  4.   index  index.php index.html index.htm;) ]& W: S. }3 [, ?; |; t. b

  5. / M% @1 |; F) h% B6 v
  6.   location / {
    $ \8 X' r0 ?; I( {
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    # W+ z; J% H4 T7 J9 G
  8.     proxy_set_header Host $proxy_host;, V/ L* K! m4 K" Q5 z3 c5 L# x/ E6 S
  9.     proxy_set_header X-Real-IP $remote_addr;9 b9 Q2 |6 `8 I  y
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    2 x9 T. ~3 }; [
  11.   }
    # N+ e- ^9 c8 f' g3 V
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
5 Y3 L2 |3 y/ Y6 @3 }7 M( D; A0 K4 D8 L1 i
加 / 与不加 /
9 v# N/ T/ D' }* j1 [% j在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径  r6 }# z9 q+ v$ C! u

9 i( o, U+ ~5 d例如
5 G% @' t0 @+ j( G) z
: ?7 x0 ?0 w" m1 \6 c加 /
5 W/ _  r8 a& {' Y8 y
  1. server_name cncml.com# O# m1 ]3 @! o/ Y
  2. location /data/ {# W/ x* l( G6 \/ w1 o6 e
  3. proxy_pass http://127.0.0.1/;: _5 h/ s" T' J# J' c
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
; N4 ^) o, c2 m" k% I7 \. H
- J% s, I  P+ k* F不加 /
* X6 b- G" h8 H4 s2 H# P5 d
  1. server_name cncml.com. W5 T: B/ C2 `6 j# N( L, d# E
  2. location /data/ {
    ! z9 S: i9 u4 {; ]3 ~' r1 d
  3. proxy_pass http://127.0.0.1;
    1 u% S* H6 t, r6 ?: d4 {
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
  ~% U; @' }1 V$ w) ?$ [& O1 G* F' i, C4 j" U
游客,如果您要查看本帖隐藏内容请回复

8 y  P% E# x/ X1 Z/ v
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-4-26 23:32 , Processed in 0.122922 second(s), 19 queries .

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