|
|
|
多个服务部署在同一个服务器,使用不同的端口。 3 k, ]" T* y9 ?; r9 l3 p
一、思考过程- 如果不想带上端口号,就只能访问 80 或 443 端口。
- 可以用过二级目录区分服务,通过反向代理转发到不同的 Server。
- 可以用过子域名区分服务,通过反向代理转发到不同的 Server。
/ i0 x6 _6 y* F1 w 二、方案评估- 对于不带端口号访问,以我目前的经验来看,找不到其它更好的方法,只能使用 80 或 443 端口。
- 使用二级目录区分服务,可行性很大。
- 能通过二级目录名,明确区分服务。
- 可是和直接使用端口号差别不大,只是把辨别服务的方法,从端口号变成了二级目录名。
- 可能导致 url 过长。
- 还是没有什么美观性。/ Z# J) J0 y( W1 ^! B- ~* J, L3 d
- 使用子域名区分服务,可行性与二级目录相差无几。
- 能通过子域名,明确区分服务。
- 具有一定的美观性。0 g' K, D8 a9 Z3 M( j
3 } F1 c: n6 c7 _' h! x1 H
三、实践操作使用子域名区分服务 的方式,然后使用 nginx 做反向代理,分发到不同的端口。 1、找到nginx的配置文件 打开nginx的配置文件,打开 /安装路径/conf/nginx.conf,进行配置 2、修改配置 [backcolor=rgb(255, 255, 255) !important][size=1em]1 & u! _' |# K" z, m B3 {
2
: s; n" f7 y% _2 M2 n3 & J( i: O" K2 I/ K2 d* v
4 2 I" m5 Q6 f7 c0 D: @
5
* B- o( Y' Q: N7 o2 C6
1 [: `( h& D. y7 }; Q7 / P6 X2 o* a6 f' m* j
8
$ I& w8 @5 K8 N9
0 o5 M& t& G& j. n. t; u! d10
6 b7 ]- B# \7 ~ p. b; H11 8 V3 r/ ^6 X1 y' i0 L% u G- F
12
# c- ~$ p$ L9 p4 w6 \13 % V: y8 D/ l$ Y+ Q
14 ' b, f4 }2 k- }" f% W3 j1 B- o
15 * x: i) ~9 t4 H3 N* s; {' U
16 " X/ \# m2 c, n. c* r% n8 a4 V9 {4 j
17
5 v- R# R) i( u8 {2 P) O" U18 : q3 M# K6 S/ g
19 , L" I; |& a, k" v. {: g
20 - m( C f; h. i/ i
21 3 O2 g% ~0 E, a9 H4 M9 r( ?6 s. s" y
22
+ r1 p% G5 \% \+ d ^23 3 q% @ h5 ?& N) ]
24 , B; Q5 F$ G4 P+ }5 j9 b4 s
25 % i& X3 s" y3 ]% w, `& f8 K& s( j/ n; w
26 z& ~$ u6 Y: M5 @% n8 o' }" S4 T
27
8 @" H* Y% ]# M+ P28
) I- \% i+ s' A' L2 D0 ^8 K29
# `( T9 C: P& |/ i& u30 : D7 C0 B1 x8 C# k
31 ' C1 E. a' h- m m$ I9 m& G- N
32 , C( q% H0 y5 c9 ?9 F
33 ! h+ i$ w4 x1 V3 B4 z& w5 b
34
3 g- d5 s) W$ t, Q, H9 c; w. D# ~35 ; |9 h; s# E7 X+ f# F- I
36 ; j) D9 k6 S* c( w
37
" q: ~+ E {, N+ z8 ?38
3 w+ c+ @& R, L0 s39
9 q- } Q% ` k! M7 U2 y9 l40
7 n: d* n- `4 v6 U( b41
& S9 h2 q4 ^( {% x, \: F: K( D42
8 q* F L% V; n7 W2 x0 y7 e) z43 / }9 s% o5 h! B
44 & G) @; r6 d: z0 Y1 a3 `
45
3 w; G% G3 T9 P, h. q* d$ q | server {
1 I5 a4 Q' b4 I$ W% p9 M: {$ ^3 R" V! S4 d/ P, F* }6 ?8 i' [4 |
listen 80;
) l v2 E! a; `7 v0 i8 J6 }5 Q1 a6 D4 h9 u
server_name *.abc.com;
( K! C) j" _) ^: Y) J
& m, M" Z8 R' X6 h if ($http_host ~* "^(.*?)\.abc\.com$") { #正则表达式 3 {: z$ a7 ?5 Z: V4 F7 E8 N3 L# }
1 G, `1 {+ ]( P( N& l- N+ E set $domain $1; #设置变量
2 |( |7 L2 w% J2 O% w* P' k }
3 ]# L+ b# l2 q4 s- E* z2 ~# J! w$ }; m- Y/ [) C4 T
3 Z% m$ l; @ k, |
location / { $ ]0 J2 o1 j7 q0 V: ?
0 j5 A% ]$ R4 ~3 t" J4 e$ @# z
if ($domain ~* "shop") {
5 g. q. P" ^; a7 u# ?3 t7 `9 O5 q3 t- J6 C; H. d
" V( N* N2 C, h& G
1 T+ `6 s: R, P& a' m# b } 0 X; a/ B0 g, \- d
! x3 P" U9 l4 }4 [ w5 _ if ($domain ~* "mail") {
( w' j; l4 l$ }, V, ~3 E2 @5 g4 w* b0 m
% W9 K: W2 ?/ l$ P) u4 T A/ k9 l
, L3 \! g* i3 i* z% q- J+ Q) \ } - |' a( @9 A8 d. o
( K- I+ y3 A: e7 z( W. c6 j2 D
3 z) i, H3 k; y Q1 Y: u+ e" _& K tcp_nodelay on;
+ g2 S% c5 c- V& T6 A" p1 F- y) z& u P
" @5 L) V! B# ^. [( h; g proxy_set_header Host $host;
$ \9 L# O( k$ p$ W# U! I7 U7 N. c) K0 u$ ?
proxy_set_header X-Real-IP $remote_addr; . X# B% K2 I' }+ [' Y3 @
* Y* @6 Z; f" {4 W" m$ f% c proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; $ B% e8 e0 T5 y
5 W% _. T. {! a+ T1 W" u" b
#以上三行,目的是将代理服务器收到的用户的信息传到真实服务器上
5 e1 W! ~" U7 k" m6 R- p2 a+ j* i+ \: z0 }
6 Z$ v0 ~ t% y, I8 F
root html; 5 T3 D4 ^4 [0 k" n+ e( U: l
) D. P# E u1 {' p2 r, W. ^3 ^
index index.html index.htm; #默认情况 ( y" T8 D/ e9 [3 U. z$ s& G
( R$ L' u7 J& g4 d( I } # T$ R5 X) I: l6 Q3 d9 _1 O* K
, D1 |, z6 w9 Z
}
8 h1 u7 S1 G# i6 f+ X0 a. M; A9 V * O: q6 n; m- I# J: \
|
3 T/ F; G' r% W) n& n" B+ y
# Q9 y( ^& Q9 V. Q z6 \# F) V# a/ e$ W4 h' f& }0 {
s( y2 n8 L- n7 w) x& ?# D* l, x* B8 y0 g3 n/ ^& P- z
) M/ v) X1 k2 D6 Z8 h
4 z# N2 X( p; [& Z& o
( s* V, ]1 r- X# ~2 T- e) N & B0 e f' ^& L" P5 w8 q s% K4 e0 Z
|
|