cncml手绘网
标题:
用Nginx做端口转发(反向代理)
[打印本页]
作者:
admin
时间:
2020-2-25 05:46
标题:
用Nginx做端口转发(反向代理)
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
. d( v# e! x ~. t
7 S+ K9 W6 V1 e# ]+ U! V
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
6 c( `* `& k" A) l3 H% h
$ Y" X% V7 E: n/ |6 U; [
将域名转发到本地端口
& F! e# G. u8 L% ~9 |( [
首先介绍最常用的,将域名转发到本地另一个端口上
. @7 @# m0 U+ f- `( ]& W4 c0 M
server{
Y" \ E8 n. H# u6 H, a& h/ A
listen 80;
0 F: G5 n' V+ x' X0 V7 \
server_name tomcat.cncml.com;
$ j/ u X, d+ O3 y4 e
index index.php index.html index.htm;
8 D+ |+ B, ~" I) ?5 D4 W4 N, |
: N1 J7 R& }7 A; I- e+ f8 J4 { T1 V
location / {
) d T1 k2 Z5 A# \% r/ l* E
proxy_pass http://127.0.0.1:8080; # 转发规则
D/ X0 a; r3 o0 o% O7 w9 T
proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
( _' r9 c& Y) E! K
proxy_set_header X-Real-IP $remote_addr;
+ r+ ?& W, g1 g; ~
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
* f7 k5 I# a; f3 Z; A. v% g% `8 [: d
}
1 M+ O- q2 O b) j; \6 T
}
复制代码
这样访问
http://tomcat.cncml.com
时就会转发到本地的 8080 端口
2 G& c: M: u/ q3 y, u# C
9 d. F/ R" U5 W2 H9 S$ a
将域名转发到另一个域名
' j, c! b, d V9 [6 e1 \4 A
server{
6 n0 p) d/ U" f" h* z0 U) @* m
listen 80;
( K" @5 Q! i! P+ d( v% l0 }
server_name baidu.cncml.com;
- O. R$ q$ x% C2 s0 j+ D7 V( b$ r
index index.php index.html index.htm;
4 K( j1 D7 @7 S( c! A& O: w7 `
$ U( H9 {- Q" t( L# N+ j" i' W
location / {
0 g, v% i9 Q) T# d) ]
proxy_pass http://www.baidu.com;
1 B( J! H0 q6 g- V
proxy_set_header Host $proxy_host;
2 z& z! K' J, e. W3 ]
proxy_set_header X-Real-IP $remote_addr;
# L- B' n- S* C0 h) }' V
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
" ]) [' E1 W' c! Q
}
( i' D+ O# o Y# K0 c
}
复制代码
[size=0.6]这样访问
http://baidu.cncml.com
时就会转发到
http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
_# r7 E+ d. ?, E2 }/ s/ T: L
server{
1 }/ U% q. o6 R3 Y9 w o0 P4 J5 [6 e
listen 80;
' ~8 `5 H, }+ b
server_name 127.0.0.1; # 公网ip
+ ]. L5 }1 h, i7 o
index index.php index.html index.htm;
g0 d) O4 l* r6 k- l
" x# w- T1 u! n! Y& i( g6 A9 {2 w
location / {
' N2 y& W4 j# N) g8 |
proxy_pass http://127.0.0.1:8080; # 或 http://www.baidu.com
9 L. v; v! C; m3 w0 @# J
proxy_set_header Host $proxy_host;
% h+ B$ v" T: o+ H) v5 ^5 l
proxy_set_header X-Real-IP $remote_addr;
8 F! w( H' G6 s+ G% @ o' V; s
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
' W( ~3 e: c) w2 [9 C# s6 d
}
. n7 ~8 _1 R4 z2 g
}
复制代码
这样访问
http://127.0.0.1
时就会转发到本地的 8080 端口或
http://www.baidu.com
" B# a9 J3 x) k$ x7 X- _
- h# z' w2 x! \% T
加 / 与不加 /
$ ^, L1 R+ g: r6 h
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
/ F" c! [0 B2 m5 T
) C/ b- o8 ~( \$ d+ {! D2 t* l' b
例如
8 a9 \& w5 U" ?( z4 f8 g: L
5 \/ E2 d4 E$ y; a7 }6 {9 t# @
加 /
& J, u S2 D7 @ h$ H
server_name cncml.com
8 S+ i! |$ H) i
location /data/ {
' p$ H+ R( w5 i4 d1 P
proxy_pass http://127.0.0.1/;
8 m% d/ E# @. _+ T* e0 E! f, Z. d
}
复制代码
访问
http://cncml.com/data/index.html
会转发到
http://127.0.0.1/index.html
- s- e5 g; i0 S, C6 ?* Q6 [. Q% s
/ x% |9 Z, d$ K F: W9 z0 b
不加 /
8 F$ H' Z9 K O: v3 U0 o2 v
server_name cncml.com
5 j c$ {/ c4 h, b z
location /data/ {
3 k& v& y0 C! r
proxy_pass http://127.0.0.1;
6 M0 ]2 ]& Z; p: R0 P' k! |7 e7 y8 V
}
复制代码
访问
http://cncml.com/data/index.html
会转发到
http://127.0.0.1/data/index.html
" |: r6 n* g4 O/ ?+ L% _. v
. @) D9 ]* Q. K) |, F
& ]6 ?( A `( W6 `/ ], w
欢迎光临 cncml手绘网 (http://www.cncml.com/)
Powered by Discuz! X3.2