使用nginx和Spring gateway实现反向代理

整体描述

整个过程就是,对于我们的一个域名,我们需要改域名访问特定的页面。

这里域名默认都是80端口,为啥呢?因为80端口不用显示写出来,别人访问你的网站,还要人家输入端口吗,这很不友好。

通过nginx代理来完成,nginx是可以通过访问域名和80端口来进行代理的(也就是端口都是80,只要域名不同,都是可以的)

具体流程

客户端通过域名(我随意起一个域名:ligel.com)

具体流程就是这样了

具体配置

【注意】 关于代码中,通过#注释的代码是原配置文件中自带的,我没进行清理,在查看时要注意,不要考虑在内。 nginx在配置时,每一行配置结束,不需要用分号结束,不然会报错的,如果发现配置失效,查看一下日志就可以了,一般nginx都是用docker部署的,查看日志还是很方便的。 关于日志中报错时,提示的是哪一行,在编辑配置文件时,使用下面代码查看行数

// 先按esc键,然后敲这行代码,也就是编辑文件要退出都要按的那个esc退出编辑的那个键
:set nunber
  1. 本地host配置,这里先在本地演示
192.168.1.204 ligel.com
  1. 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;
}
  1. 网关路由规则配置 lb就是使用负载均衡的方式访问product实例 注意一点:这项配置最好放在网关路由规则配合的最后一行,不然会覆盖其它的路由到product服务的配置,导致其失效。不管影响不影响,都配置在最后就可以了,不然给自己增加莫名其妙的bug
- id: mall_host_rout
  uri:  lb://product
      predicates:
       - Host=**.ligel.com,ligel.com
经验分享 程序员 微信小程序 职场和发展