Nginx实现多路由融合到一个路由

问题

@[java] @[代码] @[巧妙]@[Nginx]

我们采用目前主流的分模块或者说组件开发。按照功能模块,把后端系统分为了若干个组件,每个组件有自己独立的服务器部署。如果某个组件挂掉,不会影响其他组件的正常使用。但是,问题来了:

客户端在使用的时候,要记大量的不同IP和端口,非常麻烦,有没有一种方法,让后端的组件配置对于前端来说是透明的呢?

解决方案

我们引入Nginx的反向代理

做准备

  • 安装nginx(网上一抓一大把)
  • 启动nginx(网上一抓一大把)

写代码

在nginx的配置文件nginx.conf 中,加入配置如下:

本来访问 http://localhost/icloud-data/data , 配置完后,只需要访问localhost/data即可
本来访问 http://localhost/icloud-device/device, 配置完后,只需要访问localhost/device即可

server {
        listen        80;
        listen       localhost;
        server_name  somename  alias  another.alias;
        
    location / {
            root   html;
            index  index.html index.htm;
        }
        location /data {
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://localhost/icloud-data/data;
        }
    location /collect {
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://localhost/icloud-data/collect;
        }
    location /device {
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://localhost/icloud-device/;
        }
    }

配置完后,不需要重启nginx。只需要nginx -s reload 一下即可


在这个基础上,如果还想实现负载均衡,再配置一个

upstream localhost { 
      server  ip1:port1;
      server  ip2:port2;
}

你可能感兴趣的:(Nginx实现多路由融合到一个路由)