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转发内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Debian下搭建Nginx和Tomcat服务器实现负载均衡的方案

    Debian下搭建Nginx和Tomcat服务器实现负载均衡的方案

    这篇文章主要介绍了Debian下搭建Nginx和Tomcat服务器实现负载均衡的方案,其主要思想依然是动静分离并且以Nginx来进行反向代理这样的路子,需要的朋友可以参考下
    2015-12-12
  • nginx-ingress-controller日志持久化方案的解决

    nginx-ingress-controller日志持久化方案的解决

    这篇文章主要介绍了nginx-ingress-controller日志持久化方案的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Nginx配置SSL和WSS步骤介绍

    Nginx配置SSL和WSS步骤介绍

    大家好,本篇文章主要讲的是Nginx配置SSL和WSS步骤介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • 网页502 Bad Gateway nginx/1.20.1报错的原因与解决方法

    网页502 Bad Gateway nginx/1.20.1报错的原因与解决方法

    502 bad gateway nginx/1.20.1 是一个错误提示,通常出现在访问网站时出现问题,这篇文章主要给大家介绍了关于网页502 Bad Gateway nginx/1.20.1报错的原因与解决方法,需要的朋友可以参考下
    2024-03-03
  • nginx部署多个前端项目详细步骤

    nginx部署多个前端项目详细步骤

    最近一台服务器要配置多个前端项目,当然前后端分离就需要nginx来配置了,下面这篇文章主要给大家介绍了关于nginx部署多个前端项目的详细步骤,需要的朋友可以参考下
    2023-10-10
  • Nginx配合php实现生成实时缩略图功能

    Nginx配合php实现生成实时缩略图功能

    这篇文章主要介绍了Nginx配合php实现生成实时缩略图功能,这在一些特殊场合可能会要用到,需要的朋友可以参考下
    2014-10-10
  • nginx代理转发报错405 Method Not Allowed解决

    nginx代理转发报错405 Method Not Allowed解决

    这篇文章主要为大家介绍了解决nginx代理转发报错405 Method Not Allowed解决方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • nginx配置SSL证书实现https服务的方法

    nginx配置SSL证书实现https服务的方法

    这篇文章主要介绍了nginx配置SSL证书实现https服务的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • nginx的语法(基本语法和组成部分)

    nginx的语法(基本语法和组成部分)

    Nginx是一个高效、稳定的开源Web服务器和反向代理服务器,也可以用作邮件代理服务器、负载均衡器和HTTP缓存,很多人都选择nginx作为web服务器使用,下面是Nginx配置文件的一些基本语法和组成部分,使用Nginx的朋友可以了解一下
    2023-05-05
  • Nginx作为反向代理时传递客户端IP的设置方法

    Nginx作为反向代理时传递客户端IP的设置方法

    因为nginx的优越性,现在越来越多的用户在生产环境中使用nginx作为前端,不管nginx在前端是做负载均衡还是只做简单的反向代理,都需要把日志转发到后端real server,以方便我们检查程序的各种故障
    2014-08-08

最新评论