部署架构
环境说明
由于我们的服务器数量有限,就使用这三台服务器,具体的软件规划如下:
服务器 | 软件 | 名称 |
---|---|---|
192.168.220.128 | Nginx(部署前端项目、配置反向代理),MySQL(主从复制的主库) | 服务器A |
192.168.220.130 | JDK1.8、Git、Maven、jar(项目jar包基于内嵌Tomcat运行)、MySQL(主从复制的从库) | 服务器B |
172.17.2.94 | Redis(缓存中间件) | 服务器C |
1.在服务器A中安装Nginx,并将静态资源包上传到Nginx的html目录下
2. 修改Nginx配置文件nginx.conf
server {
listen 80;
server_name localhost;
location / {
root html/dist; #dist就是刚刚上传的静态资源包的目录
index index.html;
}
#反向代理
location ^~ /api/ {
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://192.168.220.130:8080; #从库的访问路径
}
location = /50x.html {
root html;
}
}
3). 通过nginx访问前端工程
http://192.168.220.128
在上述我们配置的nginx.conf中,除了配置了静态资源的加载目录以外,我们还配置了一段反向代理的配置,配置信息如下:
location ^~ /api/ { rewrite ^/api/(.*)$ /$1 break; proxy_pass http://192.168.220.130:8080; }
这一段配置代表,如果请求当前nginx,并且请求的路径如果是 /api/ 开头,将会被该location处理。而在该location中,主要配置了两块儿信息: rewrite(url重写) 和 proxy_pass(反向代理)。 接下来我们就来解析一下这两项的配置。
1). 路径重写rewrite
rewrite ^/api/(.*)$ /$1 break;
这里写的是一个正则表达式,代表如果请求路径是以 /api/
开头,后面的请求路径任意,此时将原始的url路径重写为 /$1
,这里的$1
指代的就是通配符 .* 这一块的内容。比如:
/api/employee/login ------> ^/api/(.*)$ --------> 此时 (.*) 匹配的就是 employee/login ------> 最终重写为/$1 : /employee/login