cncml手绘网
标题:
用Nginx做端口转发(反向代理)
[打印本页]
作者:
admin
时间:
2020-2-25 05:46
标题:
用Nginx做端口转发(反向代理)
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
7 a2 s, L' Q+ M3 _. B
7 D) o8 H& I0 l% _1 p. R
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
$ t! I$ Q, p' |
/ l1 q1 B8 |- _: a ^! F, c
将域名转发到本地端口
. s2 U+ r; m8 }+ ~4 m
首先介绍最常用的,将域名转发到本地另一个端口上
. u0 Z( e( B6 \. h3 r/ U$ h" k
server{
/ e; t" n8 `, s8 x+ _" @ a
listen 80;
2 e0 M5 T! m2 ]$ p7 H/ L
server_name tomcat.cncml.com;
7 G6 D( x! C5 ~# y
index index.php index.html index.htm;
. a& R7 V1 F' U) _
; l$ N) y* [( _
location / {
, [5 t" V* L0 b* W4 [9 Q
proxy_pass http://127.0.0.1:8080; # 转发规则
& T! i. I) T: ^8 ^* a9 I# z
proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
1 n1 \- e' L R: T2 I
proxy_set_header X-Real-IP $remote_addr;
1 Q. P; I/ ~6 o7 l" Z
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ S4 l8 _+ R& D$ ]7 V
}
6 u g# O9 Z. w+ T- Y
}
复制代码
这样访问
http://tomcat.cncml.com
时就会转发到本地的 8080 端口
$ I1 k6 B: T6 ?3 r) g
6 \8 @8 j: b; M3 L. z$ r
将域名转发到另一个域名
0 L/ v% \+ c- u: d2 i2 t0 }
server{
4 z! h" M S. _
listen 80;
# b. \5 @" M M2 Y
server_name baidu.cncml.com;
3 G; w% b- e# p6 I4 l
index index.php index.html index.htm;
8 J/ U$ G+ f$ S& K* h0 w; V
9 d5 t8 A. z5 ?
location / {
1 ~9 {) c( i2 m$ q) d' {
proxy_pass http://www.baidu.com;
& R, S0 e5 x6 s% Y
proxy_set_header Host $proxy_host;
1 E8 h6 K- q/ h
proxy_set_header X-Real-IP $remote_addr;
# I$ S% ~6 V4 c% [
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ B% q l% l0 M6 U# C$ M
}
0 n& l0 V- {2 }+ q
}
复制代码
[size=0.6]这样访问
http://baidu.cncml.com
时就会转发到
http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
% `9 E6 o0 v6 C# ]% K1 C
server{
D7 V, q- ^5 u+ g( _
listen 80;
& d. G o9 f9 R' k1 ]
server_name 127.0.0.1; # 公网ip
" `3 [. y, G( O
index index.php index.html index.htm;
, N1 }, H# m7 C
7 i( K* n1 x ]9 T, B
location / {
( A1 l: H5 P8 Y
proxy_pass http://127.0.0.1:8080; # 或 http://www.baidu.com
2 E! f+ U8 @% D, s, a5 i1 C! d
proxy_set_header Host $proxy_host;
: K4 [5 V( E# q o p
proxy_set_header X-Real-IP $remote_addr;
1 b0 v4 A0 U& s
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- V0 ]. k7 V g
}
( F- P: C9 {" @/ ?; w4 C* R5 R0 B
}
复制代码
这样访问
http://127.0.0.1
时就会转发到本地的 8080 端口或
http://www.baidu.com
* L+ @1 E- ~( d9 S( e& H0 f
4 q0 q# X x5 r
加 / 与不加 /
- j* P: R; N4 H
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
0 g. L" M6 c3 g h' L9 q' ?5 h
4 V& c& b7 l( |
例如
% Z% e5 \0 |3 n% U! F
4 D" G. R, q) f% Q
加 /
- q2 `/ S& J- \% s* M( j+ P$ B0 j+ O
server_name cncml.com
& X6 g0 k V1 n' Y* n4 O, @. p
location /data/ {
# @* Z) _: }7 N8 e% M8 \3 G5 ~- t5 R8 c
proxy_pass http://127.0.0.1/;
8 ?$ _% x, p: a
}
复制代码
访问
http://cncml.com/data/index.html
会转发到
http://127.0.0.1/index.html
5 G" ?, g6 Y+ Z' X
6 i7 V% Q) J) Q+ z9 o
不加 /
0 l, ]1 n# p$ K! y* x
server_name cncml.com
$ e$ z" L R! Q( b: W2 N, X7 @; K4 t
location /data/ {
2 X: h, } k9 c5 t6 q8 |
proxy_pass http://127.0.0.1;
7 e4 o" R C! Y% M( X9 {
}
复制代码
访问
http://cncml.com/data/index.html
会转发到
http://127.0.0.1/data/index.html
; ^4 o$ l, q8 ?2 M f' ]* x2 _. k
$ H; z9 g8 { w0 V5 |
1 u% T. J7 I8 }5 L. }: ~
欢迎光临 cncml手绘网 (http://www.cncml.com/)
Powered by Discuz! X3.2