使用nginx和Spring gateway实现反向代理
整体描述
整个过程就是,对于我们的一个域名,我们需要改域名访问特定的页面。
这里域名默认都是80端口,为啥呢?因为80端口不用显示写出来,别人访问你的网站,还要人家输入端口吗,这很不友好。
通过nginx代理来完成,nginx是可以通过访问域名和80端口来进行代理的(也就是端口都是80,只要域名不同,都是可以的)
具体流程
客户端通过域名(我随意起一个域名:ligel.com)
具体流程就是这样了
具体配置
【注意】 关于代码中,通过#注释的代码是原配置文件中自带的,我没进行清理,在查看时要注意,不要考虑在内。 nginx在配置时,每一行配置结束,不需要用分号结束,不然会报错的,如果发现配置失效,查看一下日志就可以了,一般nginx都是用docker部署的,查看日志还是很方便的。 关于日志中报错时,提示的是哪一行,在编辑配置文件时,使用下面代码查看行数
// 先按esc键,然后敲这行代码,也就是编辑文件要退出都要按的那个esc退出编辑的那个键 :set nunber
- 本地host配置,这里先在本地演示
192.168.1.204 ligel.com
- nginx监听ligel.com和80端口 在nginx.conf中进行配置,是配置在http{}中的,主要看upstream的配置-上游服务器,
http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; # 这里就是server快配置,其抽取到了另一个配置文件夹中,意味着可以针对某一个配置新建一个配置文件,这里就是反向代理,正向代理配置的地方 upstream mall{ # 这里配置网关的集群,有多少个实例,就配置多少 server 192.168.100.64:89; } include /etc/nginx/conf.d/*.conf; }
- 网关路由规则配置 lb就是使用负载均衡的方式访问product实例 注意一点:这项配置最好放在网关路由规则配合的最后一行,不然会覆盖其它的路由到product服务的配置,导致其失效。不管影响不影响,都配置在最后就可以了,不然给自己增加莫名其妙的bug
- id: mall_host_rout uri: lb://product predicates: - Host=**.ligel.com,ligel.com