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

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

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

( U. [1 O5 a! @" Q5 U% g( o
一、思考过程
  • 如果不想带上端口号,就只能访问 80 或 443 端口。
  • 可以用过二级目录区分服务,通过反向代理转发到不同的 Server。
  • 可以用过子域名区分服务,通过反向代理转发到不同的 Server。
    * p& K! a1 F* {# \$ x6 ]% \) g
二、方案评估
  • 对于不带端口号访问,以我目前的经验来看,找不到其它更好的方法,只能使用 80 或 443 端口。
  • 使用二级目录区分服务,可行性很大。
    • 能通过二级目录名,明确区分服务。
    • 可是和直接使用端口号差别不大,只是把辨别服务的方法,从端口号变成了二级目录名。
    • 可能导致 url 过长。
    • 还是没有什么美观性。/ C, V( k. }# V" d! {/ \
  • 使用子域名区分服务,可行性与二级目录相差无几。
    • 能通过子域名,明确区分服务。
    • 具有一定的美观性。
      + Q8 g" x- \. k6 W$ x0 v
    1 c" }6 s9 v5 {# w! q! A' |
三、实践操作
使用子域名区分服务 的方式,然后使用 nginx 做反向代理,分发到不同的端口。
1、找到nginx的配置文件
  打开nginx的配置文件,打开  /安装路径/conf/nginx.conf,进行配置
2、修改配置
[backcolor=rgb(255, 255, 255) !important][size=1em]
1

5 f: y* m+ q$ L4 C/ J( ~1 m
2

9 @* }! }. x( x+ s3 ]5 D) ?) [
3
# r6 a( ^' y2 v6 K+ U, E+ Q
4

. j. s2 R, D2 `! F2 F9 b
5
# W) _) O# E& r: S4 a
6
! h- d4 u. \4 B" S7 C7 P0 t/ {4 N
7
1 g; j* D/ @2 d. N! W. E
8

$ M- v. ]- \3 ^+ `8 ?5 t: z
9

! |* C# S3 c: z- C4 v2 V5 g
10

) a5 v$ Y& G4 ^  A
11

. |6 T* {, w% T: n
12
9 }$ n% i: F8 |2 }
13
, ]+ f: w4 n  C+ h& j) H
14
' A6 o1 [8 R6 z3 h% R0 {8 t. N' @6 ~- @
15

, D; S) ^" W$ H3 r9 u7 v/ q, O
16

* O) I( v4 ^5 E  B3 W! @0 c' }
17
4 P1 [3 l* R& K0 l1 K
18

: G2 _. I! ^" ]; l
19
) [, Z! A+ V; X& T- d- U+ ]/ b# a
20
8 r, ?2 Q$ \7 B2 `' p/ u
21

3 t. V4 p  e9 x3 _. O8 d; A
22
* y! @' t+ ?/ O% x: f$ S
23

( u1 {) \5 ?  J, I2 Y. L6 }
24
' U  _( j4 d+ f8 ]7 D( B7 B
25

! g4 M) T) y4 z
26

- v& e1 V+ P1 l! A. z4 q- C
27

! o/ `  J# g9 I  n7 p2 j" i
28
' E/ L1 B5 o, e/ \: |' Z# X
29
/ T+ Z7 q! s& R5 U/ \* M9 k
30
- U( S8 G% G) C; f
31
. b: P/ X# c4 a6 S, F
32
: T: t3 L$ \& @* P: F+ ]
33

" k* g" a6 P4 r+ f
34

% W, k7 U# E, n! x
35
( x" i  @) \8 g- W& R
36
: M& q6 X5 X4 b! R+ f: F
37
! e3 `7 a. f. ]5 @/ S
38
  R9 G1 r9 M" |+ o# d
39

6 i+ m7 [  m2 q7 c* W
40
+ B7 [, g9 |0 k4 g. c: ~
41

5 A! A, J: B3 M* B/ K; P" z8 h+ W
42
) r1 q! w. o2 H* o7 Y
43

, M2 t" A) l0 M5 X# j2 X, h
44
' ]6 G- W" a1 e. N! L# M
45
" M( ^2 {- s) s! M
server {
7 i) W0 u2 r6 e: @( Z' A

4 c/ @: W; ]2 ~! J
        listen       80;
% L8 c  o; q8 l+ b  G5 S, @

6 n* c8 G+ c5 n. |/ `
        server_name  *.abc.com;
" f- H8 s" O- R7 Y2 o
% h4 t4 F. j% S4 L; f
        if ($http_host ~* "^(.*?)\.abc\.com$") {    #正则表达式
6 m1 D( V$ ^1 M8 U$ Y1 }

: ~3 S% x  ]1 i6 W/ ~  U& Q' K
                set $domain $1;                     #设置变量

6 p% @7 f% V$ Q- s( ]
        }
" o0 Z9 t+ J& M& O% Q$ Q9 G4 Z

5 T$ N0 D9 p: r* X- r- S! `0 K" B9 N9 ^
        location / {
0 X. f7 y" G; F  b
* [- P0 l. V0 A$ c' S' u
            if ($domain ~* "shop") {
: i1 B0 S. T- P1 b$ w
! j+ T) K- y5 g  I* O, x5 e3 h
               proxy_pass http://abc.com:3001;      #域名中有shop,转发到3001端口

# n2 S5 s: S  X& S7 Y/ J0 ]* t2 r/ d4 q$ g  S8 ]3 k
            }

8 Y4 }! o0 |- P1 p- F" W/ ^# r9 E4 s/ f) E0 s
            if ($domain ~* "mail") {

% q8 h. e4 f( g5 l6 H: k
1 v0 w$ L" Q! y% R7 G1 _
               proxy_pass http://abc.com:3002;      #域名中有mail,转发到3002端口

0 V. q- P9 ]% Q. r" d/ d0 }! T9 `  N! Q4 b- v2 }
            }

9 f: t! B2 v  h! m) j* m5 O# |. |$ F0 X+ x
  c* }& C0 D! M, @, K
            tcp_nodelay     on;
6 _5 @8 _' N  n  n
5 V! D  M  e6 N' y
            proxy_set_header Host            $host;

7 }5 G9 B) A# C
8 i, b$ I, y: I$ `
            proxy_set_header X-Real-IP       $remote_addr;
2 ~( ~3 }# \" B; V( N( b
, z) C# P/ F2 `5 ^, o) i, z
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

  V* `/ P4 y( V8 }9 m) E1 D5 _5 G4 y: o% ^( P# w
            #以上三行,目的是将代理服务器收到的用户的信息传到真实服务器上

" u0 ]6 ~  g4 m. a7 z/ u9 r' Z& L/ W5 I: e

: W- Y( A- S6 w
            root   html;
0 W& Z& B" @0 U" v
5 R8 A2 ^1 `' a& r
            index  index.html index.htm;            #默认情况
" h' f3 `* w2 {: R

: a$ B( `) {( r- X
        }
$ W! |. Q7 y; M: c" l& G% b

& l" V0 d- e9 R) }% h, I7 j( T
}
# l" w1 W1 M/ R2 b" ^* S( j  \( _

/ @& T& n8 W) Y' Y% J8 S

1 t( A$ C0 {/ i) a/ m7 Y6 i" z# l5 M% d( `+ @6 A
5 w' H; }* q! u- B2 e1 F

- h, ~) v! X, Z# M5 U. h, k  w. P7 M: d1 R6 V5 F

$ f8 i$ Y8 m* x# a% q( R$ n- _1 k

- j3 c9 W9 u5 ?& t; K: ]

$ v, a9 y/ m) q# a' p- V$ y
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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