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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
6 t" N' P2 @$ b. f+ g1 G$ _: N
1 r$ }6 T9 L+ B# w" Y8 @本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
! \  R% ]5 z- Y! }& D/ F( W' `9 m! m5 q& k3 `' ]6 h7 m  Z
将域名转发到本地端口
  T  n: }* {: m) U% Y: G0 c首先介绍最常用的,将域名转发到本地另一个端口上, ]' M/ _3 ^: e" ?! G
  1. server{1 O! ~8 r' q, Z3 P7 h
  2.   listen 80;* v4 N% t# E9 m- L# m. _) _
  3.   server_name  tomcat.cncml.com;
    * ?. _0 Z0 ]' L  a' j) w
  4.   index  index.php index.html index.htm;
    * R9 G/ ^  y+ u, O. Q" ~7 ]: `

  5. 7 L% K" |5 f/ T/ }+ [6 \, n
  6.   location / {
    8 p. H( A1 x- {
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则  o. Z0 A9 M+ p3 M" v) M! K- E
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    * ?* c8 k, S: D/ v% F
  9.     proxy_set_header X-Real-IP $remote_addr;
    , C" g6 L0 T- j- z
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;/ y1 h+ H, @$ q' B
  11.   }; F. F* V4 g* S, Q
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
4 S' k1 b8 i2 ?. \8 U" b# b7 h+ e/ S, I/ N# q8 C2 ?& O
将域名转发到另一个域名' C5 u0 w3 ?8 ?8 U/ R7 G5 O
  1. server{$ ~: X5 h- q& c1 k+ G
  2.   listen 80;: i( i' J! B6 K  }9 N" b
  3.   server_name  baidu.cncml.com;3 p! a* }; D( i% t
  4.   index  index.php index.html index.htm;4 n0 |& M* M6 [% Y" l7 L

  5. 0 U/ c" J  _' {3 T- t* l
  6.   location / {) [4 X. }1 h% N
  7.     proxy_pass  http://www.baidu.com;; ^9 y  w) x+ c  Y5 T
  8.     proxy_set_header Host $proxy_host;3 t$ |$ E) m  d" C- V9 \
  9.     proxy_set_header X-Real-IP $remote_addr;
    & G$ s# f1 o/ j) J! j
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  K% \4 T0 q5 q( ^: m
  11.   }" [/ P$ C* W: v% p5 d9 Y, c( u
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名" F' V) }. d0 w5 T3 |' W0 m1 J3 h
  1. server{
    $ |) E$ |7 ^# Z* \  m
  2.   listen 80;
    ) \9 A- z5 ?: g- }
  3.   server_name 127.0.0.1; # 公网ip# R& ~% d) _9 p: f) n( j0 T; E6 _4 O7 x$ x
  4.   index  index.php index.html index.htm;& `0 _5 I0 I, \5 w+ v
  5. & U6 H3 q0 k) C6 d/ G- ~1 Q
  6.   location / {
      g, w. @, Q7 w  T: x0 u
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    $ v5 o& m0 ?6 x* H4 V
  8.     proxy_set_header Host $proxy_host;
    + Q4 P* n* P* y& g
  9.     proxy_set_header X-Real-IP $remote_addr;, p) Z, w/ H% @: I
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;* S( i% a1 r4 }: E6 M
  11.   }
    ; ~4 L) P( b; D* K' v( ^
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
1 u! W+ \- M7 k( l6 P/ L3 G, Z6 N% m
加 / 与不加 /
. T2 N/ z" q( A) ~4 w在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
- x1 c2 {: ]: l' x/ J
! m2 t; m# q9 L: r/ d3 D2 ?8 U例如
2 o. \& y+ b, A) C. C3 J8 R+ k& h5 J$ ~2 i/ e$ [6 l
加 /  x, ^# y5 X% U4 T7 C+ {
  1. server_name cncml.com
    * ~1 z! u" u5 k3 v. Q6 [# x/ \! a$ _
  2. location /data/ {; {! K1 {+ H, r; }7 q
  3. proxy_pass http://127.0.0.1/;
    ' z& }; e) b2 t7 c, `1 k! m7 _# Z$ R
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
+ K- _) O+ ~7 Z) X5 W8 T1 m3 @  S4 [, T
不加 /
/ K+ a6 u' p6 u/ x/ L% S' p- F
  1. server_name cncml.com
    # e1 c' T! U7 G  ?9 l
  2. location /data/ {; Y  z9 N. y/ c" l1 Z# i- A
  3. proxy_pass http://127.0.0.1;
    ; V5 f% v( s3 G( A
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html1 ^4 d5 X$ U( n. c
: z# g/ J  z( c
游客,如果您要查看本帖隐藏内容请回复
+ e% U% D6 `! n! n- Q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 21:43 , Processed in 0.072166 second(s), 19 queries .

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