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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发; w8 x' r. P3 o1 h+ }( g
3 s7 N( E: f$ f
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则/ b+ K7 a. G6 T& o+ P7 I

: j" M8 E' ?: \6 Z将域名转发到本地端口# R' \5 I  V% }/ O. }& A+ |; T+ ^+ E
首先介绍最常用的,将域名转发到本地另一个端口上
# o7 W6 v* b9 o
  1. server{  o% H1 d# }6 L. e7 `, t1 f" ?
  2.   listen 80;( M) O" v, S% \  D
  3.   server_name  tomcat.cncml.com;9 X& ]) y' k1 C' ?: ?# d9 w5 `
  4.   index  index.php index.html index.htm;  b6 U1 n3 w3 q$ A  `6 ~, W
  5. : D5 b) {& Z" [1 ^2 W& _4 f- o
  6.   location / {8 k4 j# z8 P* _# o1 P
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    6 K9 z& B1 T8 o1 M, k; P
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求, o% h# ]& q- h3 X0 p- ~" J
  9.     proxy_set_header X-Real-IP $remote_addr;, p  y' t$ R; L) o
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    . {' ^9 p+ ?* W( @" [
  11.   }
    & V- r' D) ?- V5 R
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
7 y$ P( p* o% w" V) }8 R! j4 y# G5 z3 a/ ~  F: H2 [
将域名转发到另一个域名1 g# p3 q1 @- }
  1. server{
    , \+ j* [; l! S4 X3 E
  2.   listen 80;' }- j3 c) ], E  r/ h4 W% Q9 ~
  3.   server_name  baidu.cncml.com;
    8 c  p! x9 S4 @, d* T
  4.   index  index.php index.html index.htm;
    5 P3 {& [6 Q3 X  `: Y
  5. 1 t/ g0 q" i. I% Z" @
  6.   location / {
    1 h: N. E" _' y2 b. ?6 u1 C! N
  7.     proxy_pass  http://www.baidu.com;- h$ o% j8 @+ Y: U
  8.     proxy_set_header Host $proxy_host;
    . R* u7 {9 E9 V0 a1 U' Q+ y
  9.     proxy_set_header X-Real-IP $remote_addr;
    ' P4 Q* j) D# p- P* A) O  L& y
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ! W' @: d$ g  K( P9 l
  11.   }4 I' J; p( R; L/ R9 h
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名4 j+ |2 ~3 B) D" i2 L
  1. server{9 {' G% _) D( i2 k& i4 J
  2.   listen 80;
    " M, Y& h) G) c5 J% L$ j
  3.   server_name 127.0.0.1; # 公网ip" g+ E* C: ]& F
  4.   index  index.php index.html index.htm;! C. U/ ~1 i% U9 t& F9 v+ B. p

  5. 9 {+ j, @* ^! e$ i7 |
  6.   location / {1 F+ m0 }% V) i# {# B1 b
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com) P- w7 D7 |0 a& p
  8.     proxy_set_header Host $proxy_host;
    / c5 }% f0 F8 @2 A  Q
  9.     proxy_set_header X-Real-IP $remote_addr;
    ( d: i& E+ Y7 |. _, C
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    5 H9 p6 N: i+ o$ w2 B; @
  11.   }
    , S% u% ^1 O. N3 ^6 J/ C+ e  B
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com( Z* C9 s1 v7 u( c  J) ^- E' @* ~
+ w+ W; U1 F9 B6 r# o
加 / 与不加 /
% a$ l  G8 Q, S4 u6 J在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
9 Z" V2 k# X0 M$ |! ^4 i
; _7 F5 J1 x2 V9 m例如
: M5 I( T. l: Q" B. @$ Y, e# a+ c
5 \2 t/ {/ o; m, s( U$ M# M) z加 /7 J3 [5 N' D7 \3 _
  1. server_name cncml.com
    : G( M9 Y0 Q8 f. r' z0 ?9 h
  2. location /data/ {
    $ x. U0 {5 R! m3 d  o
  3. proxy_pass http://127.0.0.1/;
    ! Z& R! C) c  N6 U
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html3 N! c  g5 {1 P: N: f2 T

' H: t, D: p9 T3 @! t不加 /1 c7 a$ p  F: w- @; `
  1. server_name cncml.com
    " G1 X  e, P9 b$ n% [
  2. location /data/ {
    / x' j7 _" ^+ g7 o1 Y
  3. proxy_pass http://127.0.0.1;
    - j8 d; q6 ]/ d3 U! }6 e
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
9 r$ z- Q3 T/ T2 d! F- E- s$ l" p9 Y. v" Z6 p0 S4 U
游客,如果您要查看本帖隐藏内容请回复
- L3 S) L0 J) ~7 b9 f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 16:37 , Processed in 0.052451 second(s), 19 queries .

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