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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
) N0 }5 l6 X/ h* Q. J: ^+ T: i- G' `8 S. b
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则8 M, d5 y; G* y5 q3 i

( m! Y- [# q/ s, q6 [将域名转发到本地端口
/ ]! z- e: L: P1 O, s首先介绍最常用的,将域名转发到本地另一个端口上
5 Q) e2 m" i+ ?+ u( q3 Z
  1. server{* K; L1 B( s. Y1 n9 U$ x5 R
  2.   listen 80;
    5 b7 @' A' h; S
  3.   server_name  tomcat.cncml.com;' M9 t" }! b/ L0 _
  4.   index  index.php index.html index.htm;
    8 o$ \( D* F0 h/ x' ^
  5. ' `9 k8 e! V; ~% x
  6.   location / {
    0 d/ L/ m/ ]( |0 ?+ `1 s5 k
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则" }( @5 S* I) U3 \3 |+ c( G
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求  K0 U: E2 N$ \# G# k
  9.     proxy_set_header X-Real-IP $remote_addr;) B, q, r& l+ [( k
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    6 f" H+ K/ P4 e; f) U% U. N
  11.   }* \9 J( P6 K2 C
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
+ d3 d  z4 v# B- t: O$ v7 u* z/ j8 ?& B% m
将域名转发到另一个域名
- _- x! y) H1 F- S! N
  1. server{' E* B. c3 l/ b$ }
  2.   listen 80;
    ; X& ^4 ~" x4 m9 O9 m
  3.   server_name  baidu.cncml.com;$ w% V+ [* Y1 D+ B2 U. F) O
  4.   index  index.php index.html index.htm;% t4 q7 V- @5 b, o
  5. ) p9 R" a7 d  C5 j& m, A0 G6 A
  6.   location / {
    * \& I& {3 x2 A6 a+ ~
  7.     proxy_pass  http://www.baidu.com;6 o7 b7 T( t% T
  8.     proxy_set_header Host $proxy_host;
    9 S0 x, N# Y6 m, S. C* w
  9.     proxy_set_header X-Real-IP $remote_addr;  S* S9 {6 _- v0 d/ f- j7 {
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;, j( Q+ e- @# t$ d* f: K* \
  11.   }( Z. N' Q- w* H+ ^
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
( B) ^: V( x& Q3 Z1 J4 Z3 T
  1. server{
      K8 q2 H! S* L5 s! L
  2.   listen 80;
    2 b( O8 S& Q4 B  Z/ _2 d
  3.   server_name 127.0.0.1; # 公网ip
    - a/ m- b' J6 D5 Q) E; Q' W
  4.   index  index.php index.html index.htm;% Q8 L* _7 p3 g7 ]+ I

  5. % _" o9 v* b- P* ?4 k
  6.   location / {3 k+ a3 M8 u- D3 i4 W/ y$ l
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    7 t7 q2 @7 z. g/ B. ]5 B
  8.     proxy_set_header Host $proxy_host;
    ! {3 W5 K4 w( w3 m2 G. y" |6 t) A
  9.     proxy_set_header X-Real-IP $remote_addr;. h! T! @" x( g. H/ ?  i
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;- D, `0 ?; S$ B6 b$ Z4 U
  11.   }
    8 [: a2 ?8 V; H
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
$ o5 U5 K. B. a$ L5 y- q* H: f0 u0 v( h4 A9 M; u/ J4 w" J
加 / 与不加 /( B% S4 S; D4 p' Z# g
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径1 E7 l# u. ?7 M1 w; [2 Q

4 c( I2 ]$ a, B3 X; J3 j, X例如
( Y, H9 v8 _. I5 o5 N; Y. P" q- o
4 P, Q, m- ?8 d) g5 X4 ^5 `加 /
% @6 e+ B5 `( n/ o2 J
  1. server_name cncml.com
    4 V6 |2 j4 b. S8 l" i
  2. location /data/ {
    . l& P  S+ h  u8 m, P
  3. proxy_pass http://127.0.0.1/;" P6 l- \% q# D( B
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html
" |1 |& p& o% m: ~! m) d2 C9 J- J8 @0 ]% ^( a) Q! j  {
不加 /* ?5 I, p2 P; ~, x/ A3 C9 e8 }3 o
  1. server_name cncml.com5 D8 {, \* o* u- Z
  2. location /data/ {( j7 Z2 }& H, q8 S2 H3 B
  3. proxy_pass http://127.0.0.1;
    * o; Q1 w+ Q) t" k
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
* N4 X/ _8 f' G# z4 G
7 @' J; A' F/ R! g* a' @
游客,如果您要查看本帖隐藏内容请回复

& R5 O8 V- q; v$ B& @
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-5 02:16 , Processed in 0.057994 second(s), 19 queries .

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