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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

+ ~* G( k: }7 K/ u) g本文中,我们介绍Nginx如何做端口转发,还有各种转发规则+ i, z" S4 ]4 A( }

/ K6 _+ G2 s8 r& V将域名转发到本地端口
/ s: w, O" O/ s, Y2 M+ m首先介绍最常用的,将域名转发到本地另一个端口上3 n5 `$ ~* V: C! o) U% A- h0 I
  1. server{
    - L7 W0 ^6 R/ P. X" ^; P3 O
  2.   listen 80;
    * W: R" \2 @2 v: C6 ~) Q( c1 L) M
  3.   server_name  tomcat.cncml.com;. x0 R9 c  f$ t- t7 J) p
  4.   index  index.php index.html index.htm;) A3 [9 @& G: G: T9 D1 \/ Z
  5. 0 J) f- R3 A1 O
  6.   location / {- h) u9 v* V$ Q( f0 J
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则3 s( F1 @/ r" a2 N( M
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求) m* _2 I* o- J5 ?
  9.     proxy_set_header X-Real-IP $remote_addr;
    2 Z9 D* d1 z+ M; x3 j: ?9 ]
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    0 t6 A1 h. y9 q0 ^2 M+ j
  11.   }
    8 ?2 w4 T/ h1 s* x. p; ~8 f& F/ |
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口! j+ P, X7 K& W8 q& M$ X3 y
+ \9 R. {% R! n( J; ~. E2 m) ^9 f
将域名转发到另一个域名) N) x, R7 h. b  [' |! [9 ]
  1. server{
    1 w4 g8 [/ {4 y$ @3 l( N% M3 T4 a
  2.   listen 80;
    5 S( ]* N" x/ `( D, [$ M
  3.   server_name  baidu.cncml.com;
    ' Q1 U+ U4 z4 J2 A. V7 |- J, K9 |0 \
  4.   index  index.php index.html index.htm;
    * R2 v2 \& ]+ i; ]) R! M
  5. 1 ?, I- I( r2 `% A2 W
  6.   location / {
    " T. Y3 n* S' T/ j+ n2 ]0 k
  7.     proxy_pass  http://www.baidu.com;8 T8 [, @3 i$ I* e* r
  8.     proxy_set_header Host $proxy_host;5 P' W  Q$ h: A. ]- [- t
  9.     proxy_set_header X-Real-IP $remote_addr;9 R) [6 W0 s% k
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    3 u1 S, t, v& F% m1 n
  11.   }" l; j6 S5 y, }
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名- @  G5 T! ?) O% O9 k
  1. server{
    1 t6 ?, M% p& y
  2.   listen 80;
    , h0 u) T4 h- c6 ~; Z
  3.   server_name 127.0.0.1; # 公网ip
    " a  M& _2 V7 j- q
  4.   index  index.php index.html index.htm;
    & }/ }; F6 L5 R

  5. : h; _, k! P6 i: N5 @% j+ @7 `; @
  6.   location / {
    1 W/ Q! Z& i  z' x' d2 u+ H
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com" F* Z7 U, E  a4 i3 w: @
  8.     proxy_set_header Host $proxy_host;
    * ?: h5 F1 q$ ~
  9.     proxy_set_header X-Real-IP $remote_addr;' f8 k( z; a) Y
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    4 f' R8 w' W9 O+ I7 Y
  11.   }" |. p8 X' ~& p( Y5 i9 b! U  l
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
* Z3 T9 L) w0 o4 A8 r( y$ Q( Z0 N5 l8 U5 K& s0 G
加 / 与不加 /+ ]* c) ^# N( Y! N/ {8 Y
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
" E" _  B  \! O. k. I, X; A5 D# b4 p! v8 u. d- c2 D- ?* ~
例如
- U" q, r7 s/ c( s7 m9 {4 A" j, b& d  x/ R  m
加 /
2 I3 t4 N( b9 C4 }! a
  1. server_name cncml.com
    9 O8 i$ n! h: z2 |* \/ n$ F: C
  2. location /data/ {
    ( `, }- F5 r- h( u& u
  3. proxy_pass http://127.0.0.1/;. Q+ ]0 a' Q9 P& K7 j+ {0 [, M
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
  c4 ^4 y$ t+ \$ L0 L7 |0 ^
" J8 W2 {$ G4 ?6 h3 s; J" f1 \/ n不加 /
8 _* V8 w  z3 R7 C0 j& e6 Z
  1. server_name cncml.com
    7 n* |9 C' b- c2 p/ X- U; e% C- W. i
  2. location /data/ {9 L4 a" |' N1 c5 x# f# }' I
  3. proxy_pass http://127.0.0.1;
    " L8 c5 C8 k, W; u1 B
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html  T  m- C9 h% I" `: _

! j9 ~6 @' Y9 |+ J/ S$ Z
游客,如果您要查看本帖隐藏内容请回复

1 r, f- _8 X$ r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 05:19 , Processed in 0.050426 second(s), 19 queries .

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