按照正常流程如果项目上线的话我们必须要买一台服务器,我们就会有一个公网ip地址,这样的花别人都可以访问到ip地址,为这个地址绑定上域名,备案等操作,
这样别人访问域名就可以访问到我们ip地址,但这样太麻烦了,我们开发环境中只要做基本环境,我们只要结合nginx就可以搭建出我们的域名环境
1:反向代理配置
-
正向代理:请求发给我们的代理服务器,在转给我们整个网络互联网,所以互联网上看到的所有ip地址都是来源于正向代理服务器的ip地址
-
反向代理在集群开发的时候非常需要,比如任何人去访问京东,京东有后台服务集群,我们每一个服务器都要在内网部署(公网ip不开放,防止遭到攻击),为了找到他们,我们要在后台服务集群前面前置一个服务器,这个服务器就是反向代理服务器(Nginx:拥有公网ip大家都可以进行访问)
-
反向代理的流程就是请求到达Nginx然后在到达后台服务集群
按照如下图,我们完成两个步骤
第一步:保证hosts文件中配置的ip可以访问到nginx(linux中)
访问mall.con就会自动跳转到虚拟机中的nginx中显示welcome nginx
http://mall.com/
welcome nginx
第二步:实现nginx请求发送到微服务项目中
我们希望现在在nginx中进行配置,访问mall.com的时候就可以直接跳转到mall-product的30000端口中去,显示如下界面,可是这样做不好,未来我们会有很多台的mall-product端口不一样,ip地址不一样每次我们都要修改nginx的配置,,太麻烦。我们可以先做最快的配置,请求不用到网关,来源于mall.com的请求,直接到微服务群
完成如上配置,重启nginx,进行再次访问
如果是我们的分布式系统情况下,我们每次都要进行修改上面的mall.conf里的proxy_pass,太麻烦了,所以我们让nginx中监听mall.com的请求代理到网关,网关在自动转发给微服务集群就好了,我们下一章就来完成这里的内容
2:负载均衡到网关
根据官方文档,我们要先在conf下的nginx.conf进行如下配置
我们重新启动nginx,发现报404;原因:我们把请求通过nginx发到网关,我们的网关也需要进行配置
- id: mall_host_route
uri: lb://mall-product
predicates:
- Host=**.mall.com
启动发现还是报404
为什么网关没有把nginx的请求路由到微服务中?
因为nginx代理给网关的时候,会丢失请求的host信息,所以要进行如下配置
proxy_set_header Host $host
再次重新启动nginx
总结: