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搭建高可用集群的实现方法

    nginx搭建高可用集群的实现方法

    本文主要介绍了nginx搭建高可用集群的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • 使用Nginx实现根据 IP 匹配指定 URL

    使用Nginx实现根据 IP 匹配指定 URL

    最近的一个项目,需要特定的IP访问某专题页面的时候跳转到网站首页,思考了下,直接使用NGINX实现,分享给大家。
    2014-09-09
  • 利用nginx搭建RTMP视频点播、直播、HLS服务器

    利用nginx搭建RTMP视频点播、直播、HLS服务器

    本文主要介绍了利用nginx搭建RTMP视频点播、直播、HLS服务器,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • nginx共享内存的机制详解

    nginx共享内存的机制详解

    在nginx的进程模型下,类似流量统计、流量控制、数据共享、等需要多个工作进程共同配合完成任务,共享内存是一个重要的进程通讯的方案,本文主要介绍了nginx共享内存的机制详解,感兴趣的可以了解一下
    2022-03-03
  • 使用systemctl方式管理nginx方式

    使用systemctl方式管理nginx方式

    这篇文章主要介绍了使用systemctl方式管理nginx方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-06-06
  • Nginx重定向的配置实例

    Nginx重定向的配置实例

    基于Nginx的服务器需要设置下重定向,下面的b2c就是相对应的目录,需要的朋友可以参考下。
    2010-07-07
  • nginx后端节点的健康检查和nginx平滑升级方式

    nginx后端节点的健康检查和nginx平滑升级方式

    本文介绍了Nginx反向代理的ngx_http_proxy_module和ngx_http_upstream_module模块,以及淘宝开发的nginx_upstream_check_module模块,并介绍了Nginx平滑升级原理及实战操作,最后总结了Nginx版本升级的方法
    2026-04-04
  • nginx日志中添加请求的response日志(推荐)

    nginx日志中添加请求的response日志(推荐)

    这篇文章主要介绍了nginx日志中添加请求的response日志,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-05-05
  • nginx代理参数proxy_pass的实现

    nginx代理参数proxy_pass的实现

    proxy_pass参数用于配置反向代理,本文主要介绍了nginx代理参数proxy_pass的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-04-04
  • Nginx日志打印自定义请求头的实战

    Nginx日志打印自定义请求头的实战

    nginx的日志可以打印很多内容,但是有时候自定义的请求头该怎么打印呢,本文就来介绍一下,感兴趣的可以了解一下
    2024-12-12

最新评论