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

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

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

* F/ |: U7 ~3 V2 \
一、思考过程
  • 如果不想带上端口号,就只能访问 80 或 443 端口。
  • 可以用过二级目录区分服务,通过反向代理转发到不同的 Server。
  • 可以用过子域名区分服务,通过反向代理转发到不同的 Server。: x" p. R7 X+ L
二、方案评估
  • 对于不带端口号访问,以我目前的经验来看,找不到其它更好的方法,只能使用 80 或 443 端口。
  • 使用二级目录区分服务,可行性很大。
    • 能通过二级目录名,明确区分服务。
    • 可是和直接使用端口号差别不大,只是把辨别服务的方法,从端口号变成了二级目录名。
    • 可能导致 url 过长。
    • 还是没有什么美观性。
      $ g5 {7 h0 c# {( D2 L$ ]. M
  • 使用子域名区分服务,可行性与二级目录相差无几。
    • 能通过子域名,明确区分服务。
    • 具有一定的美观性。' E# b/ H1 K1 t! Z5 d+ T% I

    7 E) d1 |% e# {  t* ~" j. i
三、实践操作
使用子域名区分服务 的方式,然后使用 nginx 做反向代理,分发到不同的端口。
1、找到nginx的配置文件
  打开nginx的配置文件,打开  /安装路径/conf/nginx.conf,进行配置
2、修改配置
[backcolor=rgb(255, 255, 255) !important][size=1em]
1

! X7 B' Q$ ?3 S+ ]1 q
2

4 D, E- u, A# x, r; G: P
3
3 T1 o  S, \' [' M8 t1 e
4

. n. ~' I- I- U# l
5
5 k. x$ G; d1 S1 ?6 C1 m' n
6

) h6 E3 b1 m9 C5 u5 N
7
7 H) [' ?7 z* n' t
8
6 i# r5 p2 |# @, a' Y6 u$ @
9

; L4 |9 F8 k& x( A# E, k" o! Y
10

  b7 L+ `$ a, G
11
" M% {; |) O  g
12

2 i: Q/ n  q4 q$ R( Q- P
13
/ f* ~  c7 E) L4 t; e
14

: J' @* y3 g4 {
15

& B- _2 e4 h4 u$ V' M# m6 B1 s; x% R
16

& `9 O  ?) T) T" _
17

+ Q: Z* w4 ]5 U+ X8 [4 Q
18
  U4 C9 ?( E3 l  E4 p
19
) d; v+ n: P- o+ r8 u' W. |4 Z
20
9 I/ ^1 N4 U# x! L
21

5 K! `" H2 O) G" W5 K1 ~
22

4 g5 L' P# l$ D/ v9 H$ j: r
23
* [9 w* D! ]5 W# K1 G' y& i$ y
24
' H5 L5 j/ y9 E  g* `# H( @
25
( U* q+ u. b% E( n  x1 W' L
26

/ ~- x# X0 z! k! N0 N
27

9 n: \  x  @: c$ H) {1 P
28

9 b! u9 W3 r2 @/ q! M1 S6 O1 m
29

" O! J$ c$ N2 ^" Z5 o+ V, k
30
+ ]8 M% E5 Q6 u/ N7 O5 I8 w5 p! Y
31

' S( `2 Q. F3 @7 |
32
) I0 B" V& j0 [( N, }
33

2 _  c7 s# S6 c* y9 x
34

( [- k4 A+ k* i, ]5 ^
35
( O  c" t1 P5 i
36
- j* H7 @1 e2 \
37
) f& y( q! Y6 Q% d2 \
38
4 ^3 E) G# n3 h, @( [8 e9 X
39
9 Z. k, W& Q: z( S# l* p$ ?- U
40

/ r, c" ~$ D0 K; f; d! a' T% M! T
41

3 d% s9 \$ T" f4 Z
42
* ]/ D6 w3 x3 S; v9 d+ R; i
43

- f/ J+ q5 i3 ]8 N& U% w/ k
44

" L1 s+ H% u0 w5 S9 L
45

* J. ~7 x# e$ a* k% M
server {
6 p; ^8 n- K! C( {  I) ^2 K
$ Q3 d- j5 X7 G* B- Z- M
        listen       80;
2 L' h2 Z1 w* o: G9 X7 y
- B9 ]) ^# X8 A5 t7 d% k
        server_name  *.abc.com;
- P; ^1 ^8 s$ r* b( I6 p
& R3 X8 ?, }! V5 C& l
        if ($http_host ~* "^(.*?)\.abc\.com$") {    #正则表达式
* V; F- d" V" F6 v! e3 U

1 U, r: F( u; v0 Q" [
                set $domain $1;                     #设置变量

1 e+ R3 S* {+ S& V
        }

% D7 K, g- d  h1 n2 S
# H% ]# o% J/ x4 G. T( i' R& C
. T, B0 `7 c5 u0 z/ e8 c5 M
        location / {
! k0 }: R8 [& G  ~: v% }* g. l) p

1 {6 w' B/ X2 x: M1 M
            if ($domain ~* "shop") {

2 L% r: Z9 b" I+ g, b0 Y4 `# @- U3 B+ E
               proxy_pass http://abc.com:3001;      #域名中有shop,转发到3001端口

1 i# o9 B2 r# \4 A
+ e1 Q; y( G0 v3 a+ ^
            }

: Q6 x5 \* E' b% u
# d0 {# k7 _0 M" k3 W/ |
            if ($domain ~* "mail") {

) r& N" q, c* D' Q! F$ O' R8 l2 H" ^0 _
               proxy_pass http://abc.com:3002;      #域名中有mail,转发到3002端口

/ J4 m  ^: h( o$ Z4 F* t1 V! \
- M6 K6 a9 p- {! R" ?
            }
' i: ]) J% J4 F+ _/ ]! c
$ Z7 d* [9 o2 f
' I. `" H5 j7 v) Z8 {
            tcp_nodelay     on;
  ^# g6 P  T; N. N) Z8 Q- T
4 `/ I0 F4 ?" p  T3 v2 g; T# o+ C
            proxy_set_header Host            $host;

" \* V; K  i  z' [( J- {0 Q8 m3 H$ x; B* w) G3 t* p: I/ P
            proxy_set_header X-Real-IP       $remote_addr;
' H" W: V7 f$ ^! g- y- b  c6 }2 A
6 c# p- P5 J/ H/ Q  z
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
% C% E8 o2 m. P& C9 ^) D2 N

5 t% F0 m* v& |5 L% A' m
            #以上三行,目的是将代理服务器收到的用户的信息传到真实服务器上
' c7 C6 \/ Y! J; E. s$ P( \0 i$ t! R% @

: i" ]9 `3 ?) U% i. _/ M: Q: ^
' T7 \+ M3 m3 q  I- B% t
            root   html;
1 N  p" y' z9 }% |- R7 N9 n
9 I+ a$ g6 F/ n# t* M8 |4 T& h
            index  index.html index.htm;            #默认情况
$ a0 f# d* d& @) R  P" A" U+ u

$ q* d% ~2 ], V, [! F: ~
        }
/ A$ T6 O  F# O6 O( g, G; Q
. D( G& A6 G  L: e; `! D
}
* B, Z; Y- w/ y
/ H3 t7 V" A7 G, D
- M+ P9 x# ]/ H3 z

$ W; r  o, z1 p$ t0 h
9 _, C; K! ?/ m7 n# T1 x- o: i0 Q% W2 y) L
: m' ~& y8 u! W% h- Q( w

" _; ?: B* i, L5 n3 T% E) w5 d0 z9 X: `1 z: m6 o! f' t1 g

+ F2 j8 K" J6 `/ ^

$ V, Y# Z8 z0 n4 M) }+ M3 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 03:02 , Processed in 0.024989 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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