cncml手绘网
标题:
用Nginx做端口转发(反向代理)
[打印本页]
作者:
admin
时间:
2020-2-25 05:46
标题:
用Nginx做端口转发(反向代理)
有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发
4 z, k" d" h( [- f m$ t t, [# S
& o/ x: k) i5 ]
本文中,我们介绍Nginx如何做端口转发,还有各种转发规则
# I6 w, n# G' h: q3 f' g+ v: m
5 h0 V" o/ V8 a: Y' O! L5 o
将域名转发到本地端口
# T5 j1 w1 S5 f% e+ ]- u, v) _
首先介绍最常用的,将域名转发到本地另一个端口上
( x- R7 k( P: p: J) w
server{
- V$ n8 `- \# S- m$ h# P7 _
listen 80;
. }6 T1 Q' j5 T* ^* i1 G
server_name tomcat.cncml.com;
7 \% y5 C" O- W. @& D \
index index.php index.html index.htm;
- a5 K* o H) R$ T! i' z
3 A; a z2 j- J7 p/ ]( c0 i
location / {
1 X3 m! e- W, d$ ?: Y
proxy_pass http://127.0.0.1:8080; # 转发规则
6 {1 s5 @' c9 |# a8 x! x v1 b% v1 O% |
proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
' ~7 R# y( p% E: Y& f
proxy_set_header X-Real-IP $remote_addr;
, U1 f2 @' K! d6 I% \" P
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
% E) V7 x! U3 y
}
" ~: C3 K% ^+ {( S+ ?7 O7 E5 `7 w8 X
}
复制代码
这样访问
http://tomcat.cncml.com
时就会转发到本地的 8080 端口
1 z) [, g# \. e' t
1 P: x$ L7 s9 A1 c; Q
将域名转发到另一个域名
" u9 t, y- f/ M% l* A U% F
server{
: T. [8 P5 L, m/ e
listen 80;
! `$ U/ `' c# f' b8 ?
server_name baidu.cncml.com;
0 Y5 W w; O* o: |7 C
index index.php index.html index.htm;
3 `8 ^% E! F& @" Q& W
7 c6 i8 k1 o8 ?; Q
location / {
! f8 H3 _, a& L( c6 C5 @& C% U$ z
proxy_pass http://www.baidu.com;
( R7 Q3 l4 q4 b, L
proxy_set_header Host $proxy_host;
* X1 K: W, I' m- C" A$ A9 D! C8 ^
proxy_set_header X-Real-IP $remote_addr;
; x/ X( }. F9 t- ~" f% g. i
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
S* T K5 S6 v. u0 _/ U7 {2 H- I R
}
( Y' ]% P' P, |, R2 h: A% l! q
}
复制代码
[size=0.6]这样访问
http://baidu.cncml.com
时就会转发到
http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
" R4 v* X# {+ @0 z
server{
. M, z7 ]7 W. Z/ ~
listen 80;
& O4 \9 y1 V' ]7 D( Q0 W
server_name 127.0.0.1; # 公网ip
% X! g( C6 {5 W8 k$ ?0 B+ T9 L
index index.php index.html index.htm;
2 I/ q8 a" V% B1 V- O
0 J7 W7 k, J$ m. b8 i0 i% i
location / {
4 _1 }2 o0 }0 V. j4 I7 W
proxy_pass http://127.0.0.1:8080; # 或 http://www.baidu.com
. W3 j% i: r/ E" P2 o9 h
proxy_set_header Host $proxy_host;
2 ^ D: n1 h+ o2 o
proxy_set_header X-Real-IP $remote_addr;
) Z0 _. T; K' v% m6 p$ e$ R
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
: V, B9 d$ B% D3 v) \
}
* Q* N* Y8 B& R5 i. I
}
复制代码
这样访问
http://127.0.0.1
时就会转发到本地的 8080 端口或
http://www.baidu.com
, s0 v/ _& Z$ C* U+ P
9 u" g0 p2 a# V) a1 [- h$ R& }
加 / 与不加 /
1 M3 R- w* X, H
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径
/ d( F$ X+ E7 R }# |
' D/ L6 A( [2 T$ A3 J
例如
5 Y5 |" y, q7 A1 w: A
) {' [$ M8 {2 \. J! V# ^
加 /
5 @8 d! s. k- F$ {& C9 \
server_name cncml.com
, @8 D) {# V% r
location /data/ {
* V/ f6 Q& t: G
proxy_pass http://127.0.0.1/;
8 N" H" S' _) y: u7 a7 i/ `
}
复制代码
访问
http://cncml.com/data/index.html
会转发到
http://127.0.0.1/index.html
3 N ^$ e/ W( ?5 c! K
5 w& I, N; w$ j" p2 X$ s4 ~( K
不加 /
7 t- Q. N9 E# M1 \1 q2 D
server_name cncml.com
2 x" u) \4 A- S- y# p
location /data/ {
: v' S2 \+ C( r* {" q6 N$ a
proxy_pass http://127.0.0.1;
# T: _3 `% [5 k; c& K! Y5 e o
}
复制代码
访问
http://cncml.com/data/index.html
会转发到
http://127.0.0.1/data/index.html
/ O( N" J3 D9 J' F) K2 q
" b; L7 s8 j/ V2 \; J" T' w
2 k% C c; ~, b& O9 k
欢迎光临 cncml手绘网 (http://cncml.com/)
Powered by Discuz! X3.2