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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

+ ]- B7 p  V* ]8 Y2 L. a: P本文中,我们介绍Nginx如何做端口转发,还有各种转发规则7 L# \# U; ?( q# h

" Z& N6 O$ a$ z% g- N( ~将域名转发到本地端口
$ g$ L/ B' ?7 e& }& ~+ d首先介绍最常用的,将域名转发到本地另一个端口上
/ b+ Z" \) u# M
  1. server{
    ) a( u( ?. I! m
  2.   listen 80;' ^8 G$ E% g1 [7 U) s! ]6 L
  3.   server_name  tomcat.cncml.com;
    9 M: X  N" D: |5 [+ l' W
  4.   index  index.php index.html index.htm;
    7 {  G; W" A) O; q
  5. 7 H$ R( m. Q+ c7 i
  6.   location / {3 p$ e* c7 f( I% i; D1 j( r1 c
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    ! `* m' ?; {- g, |
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求' J+ C4 O. B: K& H. p
  9.     proxy_set_header X-Real-IP $remote_addr;
    # j: `! q( ^( |' [$ E$ c* J
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;% v- e3 Z; P0 l
  11.   }
    " p" T  T; T2 X8 p+ E  R
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
7 q+ n. r) p4 a% C
. ]; ^6 D* @9 X) k7 L2 a; c! E5 n将域名转发到另一个域名3 W. x1 d) t! |) r' }" N" a
  1. server{5 J6 v+ S% k9 I
  2.   listen 80;# a; L; C$ |: q7 P! F
  3.   server_name  baidu.cncml.com;
    ( Q7 M3 t6 ^; z; c2 k8 s. F, ~
  4.   index  index.php index.html index.htm;# p: T6 E/ A3 D- q

  5. " L/ \1 x; {8 w
  6.   location / {2 r0 S8 e) {) N' }. p- U( N
  7.     proxy_pass  http://www.baidu.com;$ K4 m& j' B/ I/ P; e5 y2 v1 j
  8.     proxy_set_header Host $proxy_host;- Y+ u' ?& V& K. {
  9.     proxy_set_header X-Real-IP $remote_addr;
    6 N6 k' [# J: n, C. h5 t
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ' L7 _  k6 G( G2 |2 }
  11.   }" m+ u4 V- S2 P; C5 Z7 [' J
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
% `: A  l$ ^& D
  1. server{
    ( h( T, ?4 P9 w. e$ L/ Q+ z
  2.   listen 80;
    - b- j/ ?3 _" ~' e3 v3 l
  3.   server_name 127.0.0.1; # 公网ip/ a6 Y7 b$ r0 v
  4.   index  index.php index.html index.htm;9 N. C8 w( n9 [! K! N
  5. 9 d5 C4 T, A/ L
  6.   location / {
    7 I" F' G7 {/ Y5 Z. z
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    " z1 J9 D2 f& A
  8.     proxy_set_header Host $proxy_host;$ n/ a0 S% D. v' U& N0 |1 }
  9.     proxy_set_header X-Real-IP $remote_addr;, @8 V. d/ Y" j( Z
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    4 \3 E& A6 O( E1 A# F
  11.   }0 @/ L2 W9 A/ _/ B; a! f
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com5 [% A9 ~, }( P% w* c
. G$ F. J1 ~, w" b
加 / 与不加 /6 o1 i" ?2 u: ?
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径0 y3 J/ L, Q" c/ N. f

% U4 d) p1 n0 E6 a3 e5 A% g* ~例如! B# B1 k! e, b0 B3 c  p% R
% k( O' ~' w/ @, Z' @1 [: A
加 /6 v. F, u9 R/ w
  1. server_name cncml.com
    - L. l! @# e/ D3 m* y
  2. location /data/ {, k; u' r2 l5 V8 i" G( X# d
  3. proxy_pass http://127.0.0.1/;
    * z# m: P; J- S, Z4 O9 y+ e
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
, B; M8 }% V- {0 _1 M' J
2 v9 }/ L5 `" Y& ~不加 /
' A% u+ ^) g7 {# H( m
  1. server_name cncml.com
    : l( s# \, r( M
  2. location /data/ {
    - J' M: I, i5 H* N, {8 O
  3. proxy_pass http://127.0.0.1;
    7 ]' V9 m) R4 F* [4 L% x2 e; j
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html3 Z; s7 W/ C! m5 z' t% _  _$ x
8 _& J# ?; D) p. N* @0 ]
游客,如果您要查看本帖隐藏内容请回复

9 M4 w& F' @0 `
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-25 05:29 , Processed in 0.055746 second(s), 19 queries .

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