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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
8 u) u- n0 m5 _- x- w% e
* F5 n# v- n! ]6 P" Y2 }本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
: d; ^4 ~$ Z3 x2 R( C+ F( M
* W$ z9 d4 ?; T5 D+ ^; A9 D) X将域名转发到本地端口" C3 K5 {! J. `0 N9 o5 U9 a
首先介绍最常用的,将域名转发到本地另一个端口上+ W) O7 _: t5 D' C4 f) i; L
  1. server{; p- e. O+ F" r+ ~# h; R
  2.   listen 80;
    5 S7 P4 |. b6 _4 t
  3.   server_name  tomcat.cncml.com;, p( |( ~& U6 G( F4 s2 [+ q5 q
  4.   index  index.php index.html index.htm;
    2 I# X( p: u' Y' J4 K" G
  5. 9 ?$ T$ }- @% }
  6.   location / {
    + ^- @  U* Q7 T: W' E
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则4 J% A/ w) ^% Y6 Y
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求; K9 _6 h9 L+ c3 i. s! R
  9.     proxy_set_header X-Real-IP $remote_addr;
    9 ]) o" D0 \8 O* x- q% q
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      \/ v- T# B; z( j$ u
  11.   }& ?) O- q0 [$ K! [
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口$ R$ P! b* }0 a" J
: D" p) @; O, X6 F
将域名转发到另一个域名" u  I& _0 G6 |
  1. server{: |# d0 B1 J5 e, N  U
  2.   listen 80;
    5 j; `' z" l& k9 ?
  3.   server_name  baidu.cncml.com;/ v3 M2 j9 n. [* Y' r3 q# _/ m- y
  4.   index  index.php index.html index.htm;2 a8 k6 A% q8 s" M& [$ X! G. F

  5. : I! J. C3 o- }! w/ N1 K0 q
  6.   location / {3 u' k+ N+ C' c% Z
  7.     proxy_pass  http://www.baidu.com;
    8 V2 p0 x# [* l1 g
  8.     proxy_set_header Host $proxy_host;3 k# O; F+ P1 T  N2 c
  9.     proxy_set_header X-Real-IP $remote_addr;
    6 u* \/ F' [9 m6 T2 |9 ~$ P' V
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  F+ W  ?0 i' E- C4 _4 f
  11.   }" r: J  N; F/ @& m
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
6 x/ m6 S( R5 y, _8 J& m+ I2 P
  1. server{
    ' H6 Z  Q/ w* n! @: F9 g
  2.   listen 80;( a2 L% ^$ m% j7 ~6 b3 j1 ~# U+ _
  3.   server_name 127.0.0.1; # 公网ip3 c! s+ `: l( ^1 z
  4.   index  index.php index.html index.htm;
    3 @0 d9 I: X" F; }% Z
  5. - b8 O" _7 u2 M
  6.   location / {) {5 m: x5 z! q1 }
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    8 V0 c1 ?, Y, O( d' o
  8.     proxy_set_header Host $proxy_host;/ F: b/ [, Q  k
  9.     proxy_set_header X-Real-IP $remote_addr;: J: i0 U, n" D' x, ?3 P
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    . c! y3 r+ z/ Y0 q
  11.   }1 h2 g9 Q( o- y" O  N7 s% E
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com" J3 c. b8 j  \

3 r7 J: a2 D# Q( D加 / 与不加 /
3 U+ y: N2 S3 L; j% ^) Y& `在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径1 S) d. k. r! G) W$ O# Q

, o: r6 y5 Z* n3 c例如
. E5 k/ ?8 B$ E& |- M. h7 W0 x8 I/ K8 q1 `: S5 ^* X6 M
加 /9 z0 ]) ^' w8 I0 f% y; [( f
  1. server_name cncml.com
    4 O& U3 p6 V  \& D
  2. location /data/ {4 e- B2 J' N& L1 ~
  3. proxy_pass http://127.0.0.1/;
    3 ^, x* `% b; `: p' L
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html! x% q2 d% [+ R* E

0 t' C( Z3 T* F, v. q  m8 F不加 /
0 t% }0 A/ _0 w
  1. server_name cncml.com, ^# I( _9 A! W! Z
  2. location /data/ {
    8 M2 i% S7 Y# u( c2 E
  3. proxy_pass http://127.0.0.1;
    7 h3 O0 K7 |2 n: _& n1 L; v# U
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html" t6 f/ v3 ]8 ^" Y  [1 a

3 o( j9 H) f; D  W$ @6 K
游客,如果您要查看本帖隐藏内容请回复
) b' e/ k: E* c: Q/ O" D% {: g- ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 21:49 , Processed in 0.051849 second(s), 22 queries .

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