nginx实现指定url转发详解

 更新时间:2024年11月19日 08:27:52   作者:玛奇玛丶  
这篇文章主要为大家详细介绍了nginx实现指定url转发的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

故事背景

目前有一个鉴权服务流量很大,部署了很多台机器,由于流量太大会导致整个现网的网络资源不够用,需要切换一些流量到备灾机房,在备灾节点也部署多个服务,分摊服务器和网络的压力。但是在后面测试的时候发现有一个问题,有一个功能会通过HTTP请求通知在线的黑名单刷新,走的是内网,但是现网机房和备灾机房网络互不相通,无法走内网,所以无法通知到备灾的服务刷新黑名单。

思考方案

遇到这个问题,我的第一反应是可以用mq消息队列做订阅服务,当离线修改黑名单后,把数据放到生产者中,每个在线的服务订阅后可以拉取到信息更新黑名单列表,这个业务场景其实挺适合用MQ的,因为如果扩容的话直接部署多一个服务,不需要做另外的配置,目前用HTTP请求通知的话,如果扩容需要重新配置多一个通知的ip......但是,领导可能对于引入新的中间件觉得有一些风险,所以还是考虑另外的方法。

因为无法通过现网机房直接请求到指定的备灾机房的某一台机器上,我就想写一个java接口,是备灾机房专用的,接收到请求之后,会请求到备灾的某一台机器上,通过新写的postPrepareAll()接口,请求到其他的备灾服务刷新黑名单。

如图,请求12.12.12.12/test/postPrepareAll接口,随机请求到10.0.0.3,在通过postPrepareAll,请求所有的服务(10.0.0.1、10.0.0.2、10.0.0.3)刷新黑名单。

nginx指定路径转发

后面领导说还有一个更好的方案,直接用nginx转发请求就好了,都不用写代码。我熟悉了下这个确实方便很多。因为nginx一般都是用于做反向代理负载均衡,我都快忘记还有代理转发的功能了......通过nginx配置端口或者路径后缀实现代理转发。

端口:

监听8881端口的所有路径转发到10.0.0.1:8080的服务下

监听8882端口的所有路径转发到10.0.0.2:8080的服务下

 server {
                listen       8881 ;
                server_name   负载ip;
                root html;
                index index.html index.htm;


                location / {
                           proxy_pass   http://10.0.0.1:8080/;
                           #以下是一些反向代理的配置可删除
                           proxy_redirect             off;

                           }

        }
        
 server {
                listen       8882 ;
                server_name   负载ip;
                root html;
                index index.html index.htm;


                location / {
                           proxy_pass   http://10.0.0.2:8080/;
                           #以下是一些反向代理的配置可删除
                           proxy_redirect             off;

                           }

        }

路径:

监听路径为/test/addblack/1的请求转发到10.0.0.1:8080/test/addblack

监听路径为/test/addblack/2的请求转发到10.0.0.2:8080/test/addblack

 server {
                listen       8832 ;
                server_name   负载ip;
                root html;
                index index.html index.htm;


                location /test/addblack/1 {
                           proxy_pass   http://10.0.0.1:8080/test/addblack;
                           #以下是一些反向代理的配置可删除
                           proxy_redirect             off;

                           }

                location /test/addblack/2 {
                           proxy_pass   http://10.0.0.2:8080/test/addblack;
                           #以下是一些反向代理的配置可删除
                           proxy_redirect             off;

                           }
        }

因为两边网络不是互通的,需要开通端口访问,所以我们选择了用后缀的方式代理转发,不用开通多个端口的网络。

总结

nginx的负载均衡本质上其实也是代理转发,只不过代理的是一个列表,可以配置权重、轮询啥的。还有监听某个端口,或者某个路径指定转发到对应的url中。由于安全原因考虑,很多服务器没有开通外网地址访问,只有一个负载地址,需要通过nginx做网关转发。

到此这篇关于nginx实现指定url转发详解的文章就介绍到这了,更多相关nginx指定url转发内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 服务器nginx配置ssl并http重定向到https方式

    服务器nginx配置ssl并http重定向到https方式

    这篇文章主要介绍了服务器nginx配置ssl并http重定向到https方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Nginx配置Gzip的实现步骤

    Nginx配置Gzip的实现步骤

    本文详细介绍了如何在Nginx中配置Gzip压缩,以减小传输的文件大小,提高网页加载速度,具体步骤包括找到并编辑Nginx配置文件,添加或修改Gzip配置,检查配置并重启Nginx,验证Gzip压缩是否生效等,感兴趣的可以了解一下
    2024-10-10
  • Nginx配合Apache或Tomcat的动静分离基本配置实例

    Nginx配合Apache或Tomcat的动静分离基本配置实例

    这篇文章主要介绍了Nginx配合Apache或Tomcat的动静分离基本配置实例,实际上Nginx专门负责静态和反向代理是主流服务器配置方案,需要的朋友可以参考下
    2016-01-01
  • CentOS如何用nginx搭建文件下载服务器

    CentOS如何用nginx搭建文件下载服务器

    Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,这篇文章主要介绍了CentOS用nginx搭建文件下载服务器,需要的朋友可以参考下
    2023-11-11
  • docker部署nginx并且挂载文件夹和文件操作

    docker部署nginx并且挂载文件夹和文件操作

    这篇文章主要介绍了docker部署nginx并且挂载文件夹和文件操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • 配置解决Nginx服务器中WordPress路径不自动加斜杠问题

    配置解决Nginx服务器中WordPress路径不自动加斜杠问题

    这篇文章主要介绍了配置解决Nginx服务器中WordPress路径不自动加斜杠问题,nginx不会自动在请求的最后加上一个斜线的问题文中也有提到通用的规则改写方法,需要的朋友可以参考下
    2016-01-01
  • nacos集群搭建Nginx负载均衡的操作详解

    nacos集群搭建Nginx负载均衡的操作详解

    这篇文章主要介绍了nacos集群搭建Nginx负载均衡的详细操作,文中通过代码示例和图文介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-01-01
  • 详解Nginx服务器中配置Sysguard模块预防高负载的方案

    详解Nginx服务器中配置Sysguard模块预防高负载的方案

    这篇文章主要介绍了详解Nginx服务器中配置Sysguard模块预防高负载的方案,该模块由阿里巴巴的团队开发,能够设置负载阀值,比较强大,需要的朋友可以参考下
    2016-01-01
  • Nginx 简介、安装与配置文件详解

    Nginx 简介、安装与配置文件详解

    Nginx是一款轻量级和高性能的 Web 服务器、反向代理服务器、电子邮件(IMAP/POP3/SMTP)代理服务器,是带有 BSD-like 协议的开源产品,这篇文章主要介绍了Nginx 简介、安装与配置文件详解,需要的朋友可以参考下
    2024-04-04
  • Nginx ingress controller高可用的实现

    Nginx ingress controller高可用的实现

    本文主要介绍了Nginx ingress controller高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-06-06

最新评论