cncml手绘网
标题:
用Nginx做端口转发(反向代理)
[打印本页]
作者:
admin
时间:
2020-2-25 05:46
标题:
用Nginx做端口转发(反向代理)
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
' n0 W# C, ^$ C [
3 N+ Q$ S ^/ ~% |2 ]7 P
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
5 U! |) h, F/ y. ?
: t( R/ a5 ^6 L% a
将域名转发到本地端口
3 c7 ^1 A V7 e) m* E/ A
首先介绍最常用的,将域名转发到本地另一个端口上
/ @* |, W+ k& B
server{
7 \" m# N% j p: E) |7 p
listen 80;
\& _* {" E4 \ B/ l
server_name tomcat.cncml.com;
; h! B ^: A: L; O4 `
index index.php index.html index.htm;
2 N# K; Y2 |) |+ ]9 L& Z" }, r
. F6 |0 P0 m5 a% ~% u3 J" Z$ F
location / {
q3 |! ^- S, T }
proxy_pass http://127.0.0.1:8080; # 转发规则
0 Y( v. i4 G! Y) b: C
proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
) F' i! [% ~, H& p
proxy_set_header X-Real-IP $remote_addr;
# Y+ f* y; U4 L3 K7 s2 k
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
8 r/ z9 `* q9 |$ r
}
8 ?; N7 W0 {' g% }- Y
}
复制代码
这样访问
http://tomcat.cncml.com
时就会转发到本地的 8080 端口
9 C( E0 g2 ?* t- V* P% M0 }) i2 ~
t) `7 b8 a! H! y2 r) ]3 E
将域名转发到另一个域名
! e, I" I; P+ e" o; C( u, o
server{
$ E* z$ _. J9 V! {! X
listen 80;
3 o" P& F8 e9 \2 C& c
server_name baidu.cncml.com;
! G! G6 q3 Y$ R0 O2 x$ Z" J
index index.php index.html index.htm;
8 V& k/ m; m w$ s
4 O; L% d( A3 E6 J2 _ m6 B
location / {
0 M4 y4 `; _4 O; B- X
proxy_pass http://www.baidu.com;
2 E$ r a& w0 p2 J3 F
proxy_set_header Host $proxy_host;
`' q! d: U8 p. A' {
proxy_set_header X-Real-IP $remote_addr;
' w! x/ J$ L/ d# {/ O2 G
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
& T% {' p; e* h! Y
}
& E; `. M4 M, B
}
复制代码
[size=0.6]这样访问
http://baidu.cncml.com
时就会转发到
http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
3 r, r0 ?9 L3 ~& u L0 y) W
server{
1 m1 L& L9 |( z- q
listen 80;
# a" y0 ?' j4 o( x# V
server_name 127.0.0.1; # 公网ip
7 t) z1 u @1 Q% |
index index.php index.html index.htm;
. z3 O: p+ B# s$ X. u; h4 g! W
. N" z% K3 t8 m) t( K! C6 U3 o! q
location / {
8 X6 ^: x; q* o9 ~/ l
proxy_pass http://127.0.0.1:8080; # 或 http://www.baidu.com
' u' j7 l N9 P
proxy_set_header Host $proxy_host;
* I9 g! _+ S8 x8 P5 ~* u: q
proxy_set_header X-Real-IP $remote_addr;
2 Z8 F! J5 |' w A: O, V6 G
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
5 [' N4 t) Y( u4 \
}
9 d/ D, G4 Q% x' Z+ r6 P
}
复制代码
这样访问
http://127.0.0.1
时就会转发到本地的 8080 端口或
http://www.baidu.com
" `8 N6 ~7 x) D9 p( g# L+ ^- a6 u
4 h2 _+ y( o/ J7 R
加 / 与不加 /
6 G6 o' f$ `" W
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
0 `6 r$ u3 [; G( d$ Y2 k
1 _* ~! q: A( y' d. |. N% E
例如
4 l) c( }% e; y4 {
' ^% z. W& U3 y; q) o& Y; K% W2 {5 C9 A
加 /
A" R. l: X" s9 X ]
server_name cncml.com
: u( r2 h. O7 t7 H2 q
location /data/ {
: Q$ c, P2 L" {( L
proxy_pass http://127.0.0.1/;
+ d. i( q3 t7 |" s' X6 V) L3 b
}
复制代码
访问
http://cncml.com/data/index.html
会转发到
http://127.0.0.1/index.html
- z) h& Z7 N9 Z. z& U9 n! V5 V
4 u4 b, o: `) V/ {
不加 /
7 J6 W7 y+ d3 E( v, H: K
server_name cncml.com
9 ~$ y, i+ H1 w0 N% j( S+ E7 @1 g
location /data/ {
2 ]' ^8 ?' M- D. Y" `- H
proxy_pass http://127.0.0.1;
4 V/ Q: a: z" I1 M" |" H3 i% f& j
}
复制代码
访问
http://cncml.com/data/index.html
会转发到
http://127.0.0.1/data/index.html
! Y7 z+ k6 v& t/ T" |$ x3 o
! x" G% x3 Q: P. Z! ?: v
, C0 L9 H8 E0 Y8 {: m2 D% Y* i
欢迎光临 cncml手绘网 (http://www.cncml.com/)
Powered by Discuz! X3.2