cncml手绘网
标题:
用Nginx做端口转发(反向代理)
[打印本页]
作者:
admin
时间:
2020-2-25 05:46
标题:
用Nginx做端口转发(反向代理)
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
; o7 A8 K' M. Q( K) ~
5 `$ F. ]) ]5 I I
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
' p4 V8 b9 r$ }0 |6 s& _' |
) I, S7 O- t8 G, U9 p6 o
将域名转发到本地端口
+ S, s' k2 H" c1 o, Z7 @, v( A
首先介绍最常用的,将域名转发到本地另一个端口上
. n, U2 v) G# _. G! j6 f% V. I
server{
! }- @: C& p7 [0 x* |) o
listen 80;
2 j v6 |/ Z' ]0 m# ]
server_name tomcat.cncml.com;
1 C; C* h; c+ `, F' S3 w
index index.php index.html index.htm;
; B4 J1 ?+ j( c- s) n4 t" r8 \5 P
) g9 y& i) s8 ^- w0 X/ ^5 l
location / {
8 B' w, X& V+ L: r# X! d( Y
proxy_pass http://127.0.0.1:8080; # 转发规则
5 h! [( s* R2 E( ]6 w2 G. w" }$ M, s
proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
) {# A. J6 E1 n% ~7 u" s) f9 B
proxy_set_header X-Real-IP $remote_addr;
5 T4 a/ \* i! c s% q/ ^5 ^8 |
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
5 h" P1 L! G3 Y S* ~ @( Q
}
1 X1 L! s+ S0 ?
}
复制代码
这样访问
http://tomcat.cncml.com
时就会转发到本地的 8080 端口
. N, G# x8 r: T0 B
/ C8 n9 p6 f g( O
将域名转发到另一个域名
0 w& @% m9 [* n0 ]) v1 c
server{
2 [: C% Z- K3 j9 o' E# m5 U
listen 80;
; E, B& A3 D. z- G
server_name baidu.cncml.com;
. e9 G- `4 w6 m* x) d# d/ V8 i
index index.php index.html index.htm;
& J3 i1 x! c# z0 o9 a/ c
4 ^- [, v, c+ k& [% i1 y0 [
location / {
4 }/ e* O0 a K; e, W
proxy_pass http://www.baidu.com;
, z; S l* I9 o7 K
proxy_set_header Host $proxy_host;
( g' s) p C; J( T+ c
proxy_set_header X-Real-IP $remote_addr;
1 H' g7 ]7 ?. ?) h9 U' u, i6 v) t% u5 g
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
' x% ?; ]9 f p& J9 L7 C
}
+ w) O4 h4 j. t9 ?
}
复制代码
[size=0.6]这样访问
http://baidu.cncml.com
时就会转发到
http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
7 l5 T @. a# d7 n
server{
) O! E' q; P- t6 R
listen 80;
! s1 Q% l( ?3 c$ q- U* F2 e
server_name 127.0.0.1; # 公网ip
+ V% x$ u6 U8 m' K0 G! O# h7 i" e7 q
index index.php index.html index.htm;
/ K% I: r0 N+ V/ @0 [; Z5 t2 ~
5 X$ s# f. Y) X2 [& C+ Q! j
location / {
' K' j+ g; @6 ^7 ^: c' L
proxy_pass http://127.0.0.1:8080; # 或 http://www.baidu.com
. }; z v) P9 ~5 k% v6 E
proxy_set_header Host $proxy_host;
% \+ `8 n: S3 @* H6 S( t
proxy_set_header X-Real-IP $remote_addr;
2 Q8 [) Y V5 `: t/ E8 w" f" C
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
% ~& Z+ ?" ]0 Q% e9 C4 i) L
}
q) ?) |4 k7 }; w, s' _) w
}
复制代码
这样访问
http://127.0.0.1
时就会转发到本地的 8080 端口或
http://www.baidu.com
+ u- ^' G+ g2 k) F, m+ ~
$ f- h/ M/ L9 y$ I% D' ], `* h
加 / 与不加 /
' E% q0 a9 G, v4 ` l9 w2 G
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
- w- g' I" O* u
# E8 D Q4 A0 q1 u D* u# A
例如
E- j p: C: `$ A( Q9 t
! Y+ }8 h5 B, a3 \# _
加 /
9 n2 n# _" P: K# q. {5 j, O/ f( a
server_name cncml.com
) F- A h y) \5 f& F1 t
location /data/ {
) [) p" D2 S' B8 s/ ?5 ^5 y7 U6 N
proxy_pass http://127.0.0.1/;
2 k+ }- j- z! b9 |. d( @* |( [
}
复制代码
访问
http://cncml.com/data/index.html
会转发到
http://127.0.0.1/index.html
: p' N% X+ ?. a, {5 U
5 a+ x: v: C% A2 W. ^$ Z7 W
不加 /
W4 `' v; Z8 Q) }% A, d, _4 n
server_name cncml.com
$ x, |) N3 C' ~2 v
location /data/ {
2 U6 P9 b, x& i! d: s/ F
proxy_pass http://127.0.0.1;
& d0 O; f. ~7 V' v5 c0 c; o
}
复制代码
访问
http://cncml.com/data/index.html
会转发到
http://127.0.0.1/data/index.html
! n$ E( p" v; t
/ |* R( g8 a% c) S
6 }- c Y; s3 U+ y1 s1 Y
欢迎光临 cncml手绘网 (http://bbs.cncml.com/)
Powered by Discuz! X3.2