需求
- 当一台服务器上,需要使用nginx部署多套项目时,将所有项目配置在同一config 下,容易出现混乱,维护起来也比较困难。
- 部署多项目时,因为每个项目启动都会有不一样的端口号,客户端请求的时候需要带相应端口号,麻烦且没有必要。
解决
- 配置混乱问题,可以在主配置文件内引入其他的配置文件包,来解耦合。
- 客户端带端口问题,可以在反向代理服务器(nginx)中根据请求路由做一次内部转发。
架构设计理解
规划
服务器
Centos: 7.9.2009 (Core)
Windows:10
域名及服务
服务
前端web服务: a-resource.top 和 b-resource.top 192.168.71.189
后端http服务: api.top 192.168.71.58
后端websocket服务: websocket.top 192.168.71.182
Nginx服务: all 192.168.71.189
域名解析服务: a-resource.top b-resource.top api.top websocket.top 都解析到 192.168.71.189
配置
每个项目拆分为一个独立conf,然后在主配置文件中 include 集成进来
-
主配置文件 nginx.conf
-
在nginx安装目录下 …/conf下,新建vhosts目录,与nginx.conf同级目录
- 在vhosts 创建单独多个 *.conf 的文件,如api.top.conf,命名规则自己定,此处以域名做区分
注意每个分离conf中的listen不要相同,不允许冲突
-
api.top.conf
-
a-resource.top.conf
-
b.resource.top.conf
-
websocket.top.conf
-
在反向代理服务器(nginx)中做一次内部转发,用于反向代理服务器对外统一监听在80端口,对内(上游 upstream)根据请求路由(URI路径)做区分转发
-
域名解析服务
将 Windows10 当做域名服务,在 C:\Windows\System32\drivers\etc\hosts中配置
192.168.71.189 api.top
192.168.71.189 a-resource.top
192.168.71.189 websocket.top
192.168.71.189 b-resource.top
- 客户端
在Windows10中当做客户端去访问服务
1. curl http://a-resource.top/a-static/my2.html
hello my static resource-a page2
2. curl http://b-resource.top/b-static/my2.html
hello my static resource-b page2
3. curl http://api.top/a-api/v7/game/gameSurface/recGame
{
"flag": 0,
"code": "500",
"message": "网络异常,请稍后再试"
}
4.使用在线websocket测试工具(http://coolaf.com/tool/chattest)
[root@localhost ~]# /root/node_modules/wscat/bin/wscat -c ws://websocket.top/a-websocket/
Connected (press CTRL+C to quit)
> hello world
< Server received from client: hello world
问题
- curl访问正常,浏览器却无法访问
1、考虑防火墙的问题;
2、看是不是开启了VPN代理,关掉