cncml手绘网
标题:
用Nginx做端口转发(反向代理)
[打印本页]
作者:
admin
时间:
2020-2-25 05:46
标题:
用Nginx做端口转发(反向代理)
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
3 Z, R) h" F0 \% J" H$ y5 F5 V
% D i% Z0 P5 e/ n( s0 f
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
4 f( J$ f3 v$ H
: ^, _" q5 N& M; T6 l$ Z; `
将域名转发到本地端口
& d) [! \5 s1 X3 W2 L9 a
首先介绍最常用的,将域名转发到本地另一个端口上
' M1 ?0 t, Q2 x# v E9 _
server{
# A- H4 I# f. E. ?2 U
listen 80;
& B2 f6 d1 S9 f/ ]* D* y
server_name tomcat.cncml.com;
( P- y M" ~( l- r, Z7 I
index index.php index.html index.htm;
^& A4 F7 n+ f* o
# q* b7 G! E3 f
location / {
; J$ H7 I8 Y$ R8 ~, g. W, v
proxy_pass http://127.0.0.1:8080; # 转发规则
5 v& F7 s3 q! N9 t5 x- z
proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
5 \! k; d; s N* k2 O' B
proxy_set_header X-Real-IP $remote_addr;
) E6 f1 Q. m! Q
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- {/ T" E5 }( s, s& ~
}
% H5 D) h( W; B8 M8 R$ t7 B
}
复制代码
这样访问
http://tomcat.cncml.com
时就会转发到本地的 8080 端口
' y. a7 |" n7 L9 ^: e3 f/ b4 }
: [0 x0 j* U$ G8 _' M
将域名转发到另一个域名
. p9 U9 p3 ]2 N% R
server{
' F& n h, l: m; p6 X2 d5 q9 s( B |
listen 80;
. `0 u& H, j6 P. A. Q
server_name baidu.cncml.com;
2 ]% x9 ^0 H* h% \* G
index index.php index.html index.htm;
4 O2 M4 y& ], P: U% e& {6 v
! x2 l/ V/ f/ K& y& b! V
location / {
1 r R1 j2 F* ?0 g" j* y
proxy_pass http://www.baidu.com;
( t! H# k: X. z8 O
proxy_set_header Host $proxy_host;
$ M/ U( l/ K: ~ @" {
proxy_set_header X-Real-IP $remote_addr;
% M, o$ q. y) p
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
( S$ {* R1 \$ R$ C4 F
}
) C8 |8 I' t. b0 m& u
}
复制代码
[size=0.6]这样访问
http://baidu.cncml.com
时就会转发到
http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
( o+ R* y) G1 R- `6 [
server{
) _5 l5 V# `! T& A" q
listen 80;
: b S' [8 g3 h) N0 m
server_name 127.0.0.1; # 公网ip
7 M4 k7 B" A1 A
index index.php index.html index.htm;
, ]* t4 p- p! a# G2 C
. w5 ^4 ^1 B% n7 R2 g
location / {
# Q5 o( O7 Y3 `- ?. A5 [2 V
proxy_pass http://127.0.0.1:8080; # 或 http://www.baidu.com
; d& M2 E$ {1 e% }
proxy_set_header Host $proxy_host;
; z* R& ?' B1 F! }8 B9 u* ^
proxy_set_header X-Real-IP $remote_addr;
$ }8 K: m5 z! U8 `% K
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
" t- j( Q9 |1 V7 o: J# w1 y
}
2 s; u1 W8 p, v+ j9 j0 j1 n
}
复制代码
这样访问
http://127.0.0.1
时就会转发到本地的 8080 端口或
http://www.baidu.com
# x- N, u! V' d5 m# ` s4 E
6 e$ G8 T. g" x4 u
加 / 与不加 /
/ z+ F7 ]* ]4 t! d$ \
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
* l! U3 G* }" g4 q& e( ?, X/ v
- o) }5 f; p4 n9 E& G& i. p/ }
例如
- G" K3 p3 M* j' F
) w% ?4 [& t( V
加 /
`( t) g. S/ ?' P! S2 C3 m
server_name cncml.com
" o# \! R' Y7 P- `6 Y9 u! J/ U
location /data/ {
* \. l6 ~0 z2 |( b9 Q- b7 m
proxy_pass http://127.0.0.1/;
* b% r+ K/ A, G' J: \8 ]
}
复制代码
访问
http://cncml.com/data/index.html
会转发到
http://127.0.0.1/index.html
$ }; C% P/ R9 e* d7 v- l6 m' g
) s( j4 z! e6 a' V h7 W
不加 /
2 i5 @! ]3 L6 z0 v) G- `- e
server_name cncml.com
5 H1 a& G5 x3 ?
location /data/ {
& b( L& e4 N! e
proxy_pass http://127.0.0.1;
( W9 _1 j4 ~. w5 L: b: P
}
复制代码
访问
http://cncml.com/data/index.html
会转发到
http://127.0.0.1/data/index.html
! m: z0 l+ M& P2 M3 r
3 s* E+ O# q( @/ P! h y
: g' O. G$ b! d' \) _+ z
欢迎光临 cncml手绘网 (http://bbs.cncml.com/)
Powered by Discuz! X3.2