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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,803评论 24 1,002
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,523评论 25 708
  • 主题:在人生重要的领域开展主题阅读 读万卷书,行万里路。 回想上学那么多年,真的没有读几本书,我读过唯一一本文学作...
    MarinaZhang阅读 239评论 0 1
  • 这周最打击我的不是看不懂数学题 也不是英语听写不及格 而且一个我觉得和我关系挺好的人 说我哪怕做再多的题考的也还不...
    Big头嘻嘻阅读 162评论 0 0