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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

, J- h" i6 ~: O8 E& F本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
! V9 x: o! ], w$ d6 i* `; |$ d% Y# S: z" u( y
将域名转发到本地端口
, |7 J. V* ~5 P; f$ Q$ H首先介绍最常用的,将域名转发到本地另一个端口上
. K) A6 U, ?; A* M1 _; c
  1. server{, ~$ c, [+ }3 n; f0 M" z
  2.   listen 80;
    0 p2 D) _: K6 }% ]/ [
  3.   server_name  tomcat.cncml.com;) j: T( W; p# n+ {6 G" o. {
  4.   index  index.php index.html index.htm;
    / w9 b6 s- B! ?% |9 n. D! o" h6 N/ m: G

  5. : I" Y% `& x3 R/ c* z/ }
  6.   location / {, g( K, A! x/ \6 v; V7 ?
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则9 a" W$ i( @2 C, c
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求7 S: l( L' n) p( Q
  9.     proxy_set_header X-Real-IP $remote_addr;1 f0 ?1 W$ M" a& A9 t
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;$ ?. ]* e+ w' @$ F
  11.   }
    6 w$ w: s4 p; K
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
2 B* s  g. N- N. t8 A3 C5 m0 L; D( H6 C, s
将域名转发到另一个域名
0 a. k1 A/ {: g: u1 M
  1. server{; U4 H0 G, K. a
  2.   listen 80;3 S9 z2 U, L! R; F+ t( X
  3.   server_name  baidu.cncml.com;
    ( d( O7 m) ?( @1 N/ K: s
  4.   index  index.php index.html index.htm;
    , \0 s; v. \$ [" ?
  5. $ w' f3 ~9 k+ s: O
  6.   location / {& m7 p  R9 X# c- j2 Y* n2 f
  7.     proxy_pass  http://www.baidu.com;
    : O# H, f/ Z  B3 u5 E
  8.     proxy_set_header Host $proxy_host;
    4 K1 ^7 l( v4 v, l5 J! _
  9.     proxy_set_header X-Real-IP $remote_addr;
    ( x# M) r, J/ h
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ( y  G/ C7 v0 y) o8 G" a, p1 @" m
  11.   }
    . s8 _2 L4 v3 P! a
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名4 y, q4 U# d. H5 h  R3 _& C
  1. server{
    6 G+ ], l4 q* l
  2.   listen 80;
    ; }7 o4 Q$ m# M9 L- ]8 [
  3.   server_name 127.0.0.1; # 公网ip
    / p/ U8 T) X5 J& @
  4.   index  index.php index.html index.htm;, _2 r$ T8 L2 p
  5. 3 m& ?. O. i5 C$ W- w$ o+ c* x) b
  6.   location / {
    * e4 K; @7 p! E  F7 Q0 J. n
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    , s2 U! Y$ X, A9 q5 H
  8.     proxy_set_header Host $proxy_host;3 M$ F1 `& l% W; ~) k. O- x* {
  9.     proxy_set_header X-Real-IP $remote_addr;  s* M1 B# m: R3 }! }
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    0 n- c' E  [! V0 P; _& Y
  11.   }. ^1 J  s: y5 x* G- J  x
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
, M6 D- [- f, v7 Z9 S7 k/ |2 ~( |5 |$ G+ K% Z
加 / 与不加 /* Z: Z, ?% p' H
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径; z. Q" O6 O* Y
8 H* e, s# F) w4 \( M
例如  _9 L( T2 @" U0 _0 ]% J; |  c( N. s; ]
/ a9 ^5 o* p% i
加 /' M2 K- o. g/ v0 ^" p1 D( A
  1. server_name cncml.com- @7 r* ^" L8 l  d* @
  2. location /data/ {
    & b  c  Q4 ~' G
  3. proxy_pass http://127.0.0.1/;
    4 G5 k9 |3 p$ D, P! O
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html- [/ w5 F; K7 x

3 B5 d2 \8 a& P. u& G' ~不加 /( X1 ?' u7 s, S% l4 J# b
  1. server_name cncml.com
      |8 @- T. \9 H" Y( l) x
  2. location /data/ {2 A0 r2 |; t) u( N7 X* B
  3. proxy_pass http://127.0.0.1;
    * H" e  G! W, p* ]
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html) R; E0 z- n1 ]9 }" V' c* ~! G# \

: V7 u& a8 W* |0 V+ U
游客,如果您要查看本帖隐藏内容请回复
+ I' d% ~4 i3 {6 ]0 j2 i! s) _( ]4 P
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-7 21:03 , Processed in 0.124763 second(s), 19 queries .

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