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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-2-25 05:46:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
% y7 \; W9 _! r6 @* D3 x1 Q) i  |" ~1 C, q  c+ L7 g
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则; ~0 ?% O0 D5 Q+ n: h+ u

5 |: b) ^; E# A/ a  ?将域名转发到本地端口9 z% Q& [: t' T5 B+ ]( B' O$ x
首先介绍最常用的,将域名转发到本地另一个端口上
; d* G! v# f8 A6 m- j& d* |4 V- N
  1. server{
    2 o- q5 B9 C* `. Z
  2.   listen 80;- l7 G& m+ |4 e$ `# g$ Z& f1 {
  3.   server_name  tomcat.cncml.com;' m5 m0 m5 [- L2 y& o: Z
  4.   index  index.php index.html index.htm;* V/ {9 s  ?" L5 S
  5. " Q* x% |3 ^5 }, u
  6.   location / {
    7 U( l3 u1 I8 e9 Q
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
    " O' ]+ p- e# v. W8 |6 F
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    * P9 g: k  q. ^
  9.     proxy_set_header X-Real-IP $remote_addr;- N2 h  ?4 d& @1 z4 R( d5 l& I
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;5 Y' `4 w$ w2 T( W) j- i, w. Y
  11.   }
    ( i3 c+ X3 Q+ ~* o6 r9 [& g
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口
1 [* v! q, I8 R) N, t! \; @4 `  h  h/ E% O1 b9 K
将域名转发到另一个域名
5 z3 v1 W7 W0 ?1 F/ K
  1. server{" F" L# s% [! r6 C2 i
  2.   listen 80;
    , n4 p+ K. {0 ]3 e* D' G% d
  3.   server_name  baidu.cncml.com;8 {9 z. u1 d) ~5 H* ]$ ]& J8 b
  4.   index  index.php index.html index.htm;0 z# W/ j( h" I: z- [- r8 g
  5. 0 ?& |% X9 T+ [0 P' D
  6.   location / {& K: R+ o* f2 j$ W+ D
  7.     proxy_pass  http://www.baidu.com;
      s/ X9 R1 G- m! B
  8.     proxy_set_header Host $proxy_host;$ O% Q" A8 g5 F
  9.     proxy_set_header X-Real-IP $remote_addr;
    4 V/ P5 F; A3 V4 _, l
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    + Q& S. Q0 y; J
  11.   }
    $ @* w4 W; d: K0 j) I
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
$ q- t- F& v. Q
  1. server{
    / ?9 r  L1 H: x  a# t
  2.   listen 80;- u# A: e6 C6 L8 }! s' ^- h
  3.   server_name 127.0.0.1; # 公网ip
    : h' W4 p9 z+ d# m, M/ v
  4.   index  index.php index.html index.htm;& k8 s' n% M% p  K5 p
  5. 4 X6 x% y7 V% O( h
  6.   location / {5 a: q5 o9 g3 @' W4 G7 ~
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com6 u  J. t& e9 K) ^
  8.     proxy_set_header Host $proxy_host;
    7 W0 E) V( {" \, c' h" k; c
  9.     proxy_set_header X-Real-IP $remote_addr;
    3 j. Q) \9 z3 M+ o2 S" `" Z
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ( n; J. j' v% _6 C
  11.   }
    " V# v4 }4 {) {; ?3 o, @$ x
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
/ S# C$ w0 N6 W4 d6 Z3 C0 k; `- G; e2 Q
加 / 与不加 /9 t8 ?9 v7 B6 ~3 u( v, ]7 R+ n3 Q
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
9 v6 z+ r' [* l: p: d' |& H3 q( P3 n" k, P/ G# }+ m; f8 D
例如+ Q7 o1 O0 t( A, P& b# O
/ W7 S. B5 h  D9 p
加 /+ k/ ?8 f+ J, I6 k3 A
  1. server_name cncml.com! }- }$ Z: m; s7 T7 p* G: k
  2. location /data/ {
    + f* t) E: V( [
  3. proxy_pass http://127.0.0.1/;% B; C9 T% M* v
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html1 g3 }- a4 l$ ?6 }! i+ F
8 Y# A- |' {8 s" |$ a, r/ }: i
不加 /
: w# T/ k' J0 C1 Z
  1. server_name cncml.com
    5 \" }. R% B2 T; a
  2. location /data/ {5 m3 N; ^) X& Y
  3. proxy_pass http://127.0.0.1;
    6 A7 V3 d* Z8 \' ^6 B% X
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
* C7 b  E+ q/ A8 g+ e2 C% o- |+ S; ^4 R6 b2 A4 `
游客,如果您要查看本帖隐藏内容请回复

! O9 M1 U( {  ?2 H
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 15:12 , Processed in 0.140158 second(s), 20 queries .

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