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

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2020-2-14 17:22:59 | 显示全部楼层 |阅读模式
多个服务部署在同一个服务器,使用不同的端口。

# l2 i9 [4 k4 ]5 ]
一、思考过程
  • 如果不想带上端口号,就只能访问 80 或 443 端口。
  • 可以用过二级目录区分服务,通过反向代理转发到不同的 Server。
  • 可以用过子域名区分服务,通过反向代理转发到不同的 Server。/ T! D' d( C/ W' C
二、方案评估
  • 对于不带端口号访问,以我目前的经验来看,找不到其它更好的方法,只能使用 80 或 443 端口。
  • 使用二级目录区分服务,可行性很大。
    • 能通过二级目录名,明确区分服务。
    • 可是和直接使用端口号差别不大,只是把辨别服务的方法,从端口号变成了二级目录名。
    • 可能导致 url 过长。
    • 还是没有什么美观性。/ V) b$ s7 h1 \( `" @
  • 使用子域名区分服务,可行性与二级目录相差无几。
    • 能通过子域名,明确区分服务。
    • 具有一定的美观性。
      # b: N" t/ r; a4 p- x' t

    # y2 e, V+ H- w: Q% H
三、实践操作
使用子域名区分服务 的方式,然后使用 nginx 做反向代理,分发到不同的端口。
1、找到nginx的配置文件
  打开nginx的配置文件,打开  /安装路径/conf/nginx.conf,进行配置
2、修改配置
[backcolor=rgb(255, 255, 255) !important][size=1em]
1

7 h  F: j- ~4 }' w1 {
2
# F7 {1 Q  \0 K9 [$ r# B$ u
3
- u* u; M! r3 a
4
1 g: y+ h  z0 w
5

9 v' N  _4 j- V2 v3 z0 Y. K
6

& G. P# w8 M6 U7 \+ K
7
9 i4 O! m! T8 }9 Z& f
8

( W+ k: B# G9 G' s2 X% }4 U
9

0 Q3 ?4 H' }. V! r7 B
10

8 I% s/ K7 K8 h' f
11

& U$ x5 F$ R' [9 ~. X, F
12
- E' |( f, l, S& U
13

+ c0 }8 ^: S9 p% n7 g7 M! g% r
14

: D3 h) Z& B  H5 L4 L/ I) x
15

/ k2 I+ x7 Q3 e5 }2 g8 V
16
2 X3 o" k' J$ O; p0 X
17

, Q6 s% F) L# d' l9 V/ v. p; K3 o
18
, z$ R9 a. D# K5 e4 T, d( ]! t
19
- I0 N5 Z: t2 l& C
20
5 Q) Q: H) D. z- T& r1 R
21
( T: ]; H; M+ @7 C% c2 q
22

: Q" g) K# m+ G7 X
23
& p2 S8 E+ k+ c8 S8 h% Y9 [* s
24

; k1 X- e7 l& t
25

" S, Q  o( J8 e0 r* s4 E9 J# _1 M/ `
26
4 S9 r+ ?/ w1 B
27
+ Q7 _* i0 W, z$ @# m
28
9 [9 }3 k3 N2 ^( t$ D! f  l
29
- a7 X5 D/ n1 Z1 h& p
30

0 d3 m& ^7 H9 \. p* H
31
4 @$ A7 Z' G6 ]- s% P
32
9 w$ l! o) Y5 k, J. L  F7 U8 K
33

/ H6 |( J; u/ H3 F
34

- H. f* y+ z, W8 }" T; P8 {
35
4 A% W2 _! j7 h" G5 I: \
36

/ Z' F: J- P/ K3 D2 y
37
2 Q+ H3 r( P. h* x
38
5 y* I) R* _- F. ~* D: G
39
" `- ^! ]& }$ {' `
40
3 a0 `% Z, T* t. x. m( U1 f' Y
41

4 r' J$ F5 a- N" Y/ t
42

7 w( u/ @4 t0 e( l
43
' Y0 K" v- `5 w) B! w% n
44
1 {9 b4 l+ @. Z4 C' j1 a( |! _
45

! C7 u) l& {4 u( ]/ j. p# u' N
server {

5 P$ |- S# S! B, |. }2 U$ w
- f; f' `; g# n1 n6 x
        listen       80;

( ^% @' @( \# `* i7 l( K( L; K  C+ b3 w
        server_name  *.abc.com;
+ x, J5 h- B+ ]3 z7 {5 M
! W) {. Z- A5 O; [, ]+ S' `
        if ($http_host ~* "^(.*?)\.abc\.com$") {    #正则表达式

. J3 G+ q4 O3 i1 B3 f
8 [" O4 @3 _4 A+ N9 _2 G
                set $domain $1;                     #设置变量

- h$ d" l! [/ o' K+ |
        }

$ |9 L: l9 p, Y0 G: F3 C; r. n6 \! f# X8 I' b& b4 \- q4 ^2 D
: S! o2 p' j0 M: L; I/ T
        location / {
- `3 V" @$ D8 D$ L- ?1 K
3 [% L5 o  e: w! s
            if ($domain ~* "shop") {

7 W! }7 W1 z3 G9 `$ X" Q1 K8 ?0 O) E1 R* s+ J+ n
               proxy_pass http://abc.com:3001;      #域名中有shop,转发到3001端口
+ R, v0 T" g' T8 I) }4 v4 D) A

. i! J! t: L) E2 q" V4 {
            }

. m0 a3 h+ Z/ a" m7 M* n  U! B. O5 h* R) G7 ^$ L2 Q# o  d# g
            if ($domain ~* "mail") {
3 o* S% c* ^* V! z

6 b  g; S4 ?$ `' q8 Z4 [4 {
               proxy_pass http://abc.com:3002;      #域名中有mail,转发到3002端口
  ?% e, z3 b9 t* Q) [6 ~

4 x/ {& `2 I2 v5 M0 p0 c- c2 Z! G
            }
+ f+ c0 e/ J# O0 \! P4 ?7 A
6 ]; P1 w! e% F* g# z% Z5 [$ u" U
9 k2 M. K. g2 V1 R
            tcp_nodelay     on;

0 t) ]% m0 x' z% s0 s/ c6 \2 q
9 P0 ?) V4 G- I, }0 _$ A
            proxy_set_header Host            $host;

) a# l( r' `; o2 E
$ m& T, O; h$ n
            proxy_set_header X-Real-IP       $remote_addr;
8 g$ \" R. f) [- U
5 X8 T: Y2 U6 t6 j1 U+ z
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

; q' e' X# ]$ @9 u9 t: F# J
2 a/ G/ L" z: E* P5 W& |
            #以上三行,目的是将代理服务器收到的用户的信息传到真实服务器上
% C4 b" d# B# D1 R# v6 m3 g# Q# e: }
  x* @6 }! Y& d9 b* Q9 r

) X1 \5 g, n  A
            root   html;

: L7 [+ b' ]  g2 \) b+ w& z3 J& X9 a* _5 j* g4 }
            index  index.html index.htm;            #默认情况

$ m2 z2 M$ o1 \+ P& k( `. K0 f9 G* i* s  A5 t8 `0 ^
        }
( s- u- t1 L/ b. ?/ j- j0 Q
+ N* `* r! D9 J8 b( i0 e
}

/ T0 ?2 W* ^% l8 O: m
7 o. d) S* i8 s# v, r
' F8 K3 H* C$ e7 S, ~8 }) s; @2 c

' ~2 m: Q" z/ l( b" ]; R/ f* F: o3 |, ~( p, z# O6 k: ]: k' w' x4 w6 _

! g' y" M' `0 o2 J$ m7 h: o" k/ W" Z6 j2 {; i9 X! t

( s( G+ ^, y7 |* _/ `! C. t6 j! u8 K9 C* K& F" D( M

4 o. F' _; m0 f+ l& b7 J5 i

4 M( L7 k) Y, y  L1 R! v+ z
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 01:57 , Processed in 0.022250 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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