找回密码
 注册
查看: 3820|回复: 0

nginx实现反向代理 配置多域名以及多端口号

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2020-2-14 17:22:59 | 显示全部楼层 |阅读模式
多个服务部署在同一个服务器,使用不同的端口。
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 n
3
& J( i: O" K2 I/ K2 d* v
4
2 I" m5 Q6 f7 c0 D: @
5

* B- o( Y' Q: N7 o2 C
6

1 [: `( h& D. y7 }; Q
7
/ P6 X2 o* a6 f' m* j
8

$ I& w8 @5 K8 N
9

0 o5 M& t& G& j. n. t; u! d
10

6 b7 ]- B# \7 ~  p. b; H
11
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" U
18
: 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+ P
28

) I- \% i+ s' A' L2 D0 ^8 K
29

# `( T9 C: P& |/ i& u
30
: 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 s
39

9 q- }  Q% `  k! M7 U2 y9 l
40

7 n: d* n- `4 v6 U( b
41

& S9 h2 q4 ^( {% x, \: F: K( D
42

8 q* F  L% V; n7 W2 x0 y7 e) z
43
/ }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
               proxy_pass http://abc.com:3001;      #域名中有shop,转发到3001端口
" 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
               proxy_pass http://abc.com:3002;      #域名中有mail,转发到3002端口
% 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
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 04:09 , Processed in 0.016944 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表