cncml手绘网
标题:
用Nginx做端口转发(反向代理)
[打印本页]
作者:
admin
时间:
2020-2-25 05:46
标题:
用Nginx做端口转发(反向代理)
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
! V( R2 d, `/ f2 `: ~2 A. v$ P
( O' y8 |4 b4 c+ Y1 c
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
1 V# E B, D5 k" a! A; k- _ @
b/ n( Z& H; a2 f# H6 N. o
将域名转发到本地端口
' B4 e. z7 H" O9 I
首先介绍最常用的,将域名转发到本地另一个端口上
3 k. l6 R0 }$ G' f y
server{
* D/ t }& @+ R0 r% ^
listen 80;
7 {( z1 Q [7 P
server_name tomcat.cncml.com;
& J5 @2 o: j' N, ~
index index.php index.html index.htm;
) q8 _7 J- c6 V. T/ g: u. |
( W; j8 ~6 t0 U, n0 D0 {
location / {
1 X; U* \. ^3 V7 }' ]
proxy_pass http://127.0.0.1:8080; # 转发规则
' V3 a1 f/ Y9 @
proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
, h0 {3 W b2 L( v! W2 K \
proxy_set_header X-Real-IP $remote_addr;
& d: S, q3 U1 Q' m/ `$ E
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
. E. k5 f2 N% O- O
}
& K) u* w* Z0 i7 }
}
复制代码
这样访问
http://tomcat.cncml.com
时就会转发到本地的 8080 端口
1 ^1 M* }1 X( q$ E
$ ^$ _6 T+ `. ~ L: C7 z0 w. e
将域名转发到另一个域名
' A) R, t! E/ H, v, K
server{
& q- ~* N# a3 K# Y6 e! t9 a5 C
listen 80;
2 w; _# b4 e' k
server_name baidu.cncml.com;
& s5 i& R) b6 O) ` T0 M3 W5 G
index index.php index.html index.htm;
' C: H% @3 d1 Q# i
7 o7 X* r/ N' Q) M: h, ]
location / {
: e( o. l( |9 _
proxy_pass http://www.baidu.com;
4 P1 n7 e# N5 m" ~
proxy_set_header Host $proxy_host;
* ^8 A" a2 Z" p, M
proxy_set_header X-Real-IP $remote_addr;
, D n. p0 G/ i: R! }( U
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
( s1 Y5 \7 ^/ J) k) T5 k
}
# v7 `* ]% Q3 E9 M
}
复制代码
[size=0.6]这样访问
http://baidu.cncml.com
时就会转发到
http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
6 A2 G( c0 b( y( X; g8 s$ d7 G+ U
server{
& C p! ^% _5 R9 c M$ u+ N# d* A
listen 80;
, {' U: d) ]3 `% C. A+ E, N# X4 t
server_name 127.0.0.1; # 公网ip
& v! @% R% K2 O6 U4 X
index index.php index.html index.htm;
; n7 ? t# t* y
7 k! E9 v- O+ ^6 E4 ^; N8 b/ X& z
location / {
( h J7 B& J7 Y! m' h2 Q
proxy_pass http://127.0.0.1:8080; # 或 http://www.baidu.com
% ^/ g5 L4 A: ~' Z( Y1 r6 M
proxy_set_header Host $proxy_host;
, r N" d8 b$ h
proxy_set_header X-Real-IP $remote_addr;
# c6 D0 v2 F( ?
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
8 q3 S0 ~, [- g, Q
}
8 O- I9 t' X4 Y4 G
}
复制代码
这样访问
http://127.0.0.1
时就会转发到本地的 8080 端口或
http://www.baidu.com
$ u" t7 H# v. j% }! u. r! f' |
8 A: y4 J& C, J0 |: b2 _
加 / 与不加 /
+ l$ ^* E; _- j! e+ N$ D3 W* f: P4 R
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
* m( p- |- @6 q. _4 ?
' q# u& L# o/ h" \
例如
: ^1 a2 f" d4 |
' D" c9 N# ~3 f2 c$ I3 N" y
加 /
! `- ~* d: X+ X
server_name cncml.com
9 ~, k0 p8 d g& c" i6 J" b
location /data/ {
+ ~# N) H/ D& w x( Y8 z
proxy_pass http://127.0.0.1/;
2 N+ A" C: k; M y9 D# f
}
复制代码
访问
http://cncml.com/data/index.html
会转发到
http://127.0.0.1/index.html
Q7 ?' d) B y1 D7 O5 h
* M# D; _( H4 x2 Q5 E h* G
不加 /
" `0 @) T! b+ O
server_name cncml.com
: N6 {- R& t/ L
location /data/ {
. H0 B( m6 l8 h9 z! H
proxy_pass http://127.0.0.1;
/ j% Y8 V- C* \6 S( j! i- A
}
复制代码
访问
http://cncml.com/data/index.html
会转发到
http://127.0.0.1/data/index.html
+ R% c% M$ ~3 X" S" w
' e7 I1 S1 j* I9 U
3 W5 q, n) P, Q9 v) W; |
欢迎光临 cncml手绘网 (http://www.cncml.com/)
Powered by Discuz! X3.2