Docker安装Nginx
新建要用的Nginx
开放80端口
访问虚拟机ip,80端口不用加,默认就是80端口,会出现403 Forbidden,这是因为nginx的静态资源文件夹下没有文件可读取。在/mydata/nginx/html文件夹下创建一个index.html 即可正常打开
整体示意图

反向代理配置
修改host文件:C:\Windows\System32\drivers\etc
新增:192.168.56.10 mall.com
Nginx的配置文件
我们将docker的nginx等文件挂载到了虚拟机,其中/mydata/nginx/conf/nginx.conf就是配置文件。配置文件主要分如下几个部分
- 全局块:主要配置用户组,worker process的数量、pid存档路径和日志存放路径等
- Event块:主要设置每个worker process的最大连接数(默认1024),这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置。
- Http块:这算是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。需要注意的是:http 块也可以包括 http 全局块、server 块。

conf.d文件夹下有一个default.conf配置文件,这个就是一个server块

配置代理
在 conf.d文件夹下新建一个 gulimall.conf,http会自动引入,作为server块
负载均衡到网关
nginx负载均衡给网关,网关再负载均衡到对应的服务。(分布式中最重要的一点就是保证高可用,所以处处都要考虑集群)
http全局块中配置upstream

server块负载均衡配置
nginx代理给网关的时候会丢失请求的host信息,所以不要忘记加上proxy_set_header Host $host;
如果不加后面网关通过Host断言机制会失效

gateway网关配置
现在我们访问mall.com发现404,这是因为网关没有配置路由规则,不知道路由到哪里。
注意,这里按照Host的断言一定要放到最后面,如果放在最前面,我们通过域名+/api/xxx等接口都会被屏蔽。因为网关会优先匹配Host,他会直接路由给我们商品服务,而商品服务中是没有/api这个请求路径的,需要过滤。
nginx代理给网关的时候会丢失请求的host信息,所以在配置转发的时候,要设置添加Host信息。