首页 > 其他分享 >公网域名流量禁用详解

公网域名流量禁用详解

时间:2024-08-05 18:25:06浏览次数:15  
标签:禁用 公网 流量 域名 详解 upstream 服务器

公网域名流量禁用是一个涉及网络安全流量管理的复杂操作,它通常需要根据具体的网络环境和业务需求来实施。以下是一些可能的步骤和考虑因素:

一、明确禁用目标

首先,需要明确禁用公网域名流量的具体目标。这可能包括:

  • 阻止未经授权的访问。
  • 防止恶意流量攻击,如DDoS攻击。
  • 节约带宽资源,减少不必要的网络流量。
  • 特殊时期,主动对部分业务公网流量禁用

二、评估网络环境

在禁用公网域名流量之前,需要评估当前的网络环境,包括:

  • 网络架构:了解网络的拓扑结构、路由设置等。
  • 域名使用情况:确定哪些域名是业务必需的,哪些可能是非必需的或恶意的。
  • 流量分析工具:使用如tcpdump、Wireshark等工具来分析网络流量,识别异常流量。

三、实施禁用措施

根据评估结果,可以采取以下措施来禁用公网域名流量:

  1. DNS级别控制
    • 修改DNS设置,阻止对特定域名的解析。这可以通过修改本地DNS服务器设置或在DNS服务器上设置策略来实现。
    • 使用安全的DNS服务,如ISP或网络运营商提供的DNS服务器,以防止DNS劫持等安全问题。
  2. 防火墙规则
    • 网络防火墙中设置规则,阻止对特定域名的访问。这可以通过IP地址过滤、端口过滤或协议过滤等方式实现。
    • 使用iptables(Linux系统)或Windows防火墙等工具来配置这些规则。
  3. 路由控制
    • 路由器上设置路由策略,将特定域名的流量重定向到无效地址或黑洞地址。
    • 使用更高级的路由协议和策略,如BGP社区属性等,来实现更精细的流量控制。
  4. 应用层控制
    • 应用服务器上配置安全策略,禁止对特定域名的请求。
    • 使用Web应用防火墙(WAF)等安全设备来检测和阻止恶意流量。

四、注意事项

  • 在实施禁用措施时,需要确保不会误伤业务必需的域名和流量。
  • 禁用公网域名流量可能会影响用户体验和业务连续性,因此需要谨慎操作
  • 需要定期更新和维护禁用列表和防火墙规则,以应对新的安全威胁和业务需求变化。

综上所述,公网域名流量禁用是一个需要综合考虑多个因素的操作。在实施过程中,需要根据实际情况灵活调整策略和方法,以确保网络的安全和稳定。

五、域名流量禁用实战

1、需求及方案确认
  • 特殊期间,临时对公网流量进行禁用,后续业务需要继续使用
  • 公网域名为多个业务系统公用

因此,本次部分业务公网流量禁用主要通过【应用层控制】,来实现公网流量禁用。

2、修改nginx.conf配置
  • 使用server_name拒绝特定域名(域名该业务独享

虽然你不能直接“禁用”一个域名,但你可以为那个域名配置一个server块,并在其中使用return指令来返回一个错误码或重定向到其他URL

例如,如果你想要拒绝所有对test.example.com的访问,可以这样做:

nginx

server {  
    listen 80;  
    server_name test.example.com;  
    return 444; # 444 是一个非标准的错误码,用于关闭连接而不发送任何响应头或响应体  
    # 或者你可以使用 404 或 403 等标准错误码  
    # return 404;  
    # 或者重定向到另一个域名  
    # return 301 http://www.example.com;  

}

注意:444 是一个非标准的HTTP状态码,Nginx使用它来直接关闭连接而不发送任何响应给客户端。然而,并非所有的HTTP客户端都能很好地处理这个状态码,它们可能会显示一个连接错误或超时。 HTTP响应状态码详解

  • 注释模块proxy_pass(域名多业务共享

upstream liangkk {
            server 0.0.0.0:80;
        }

server {
    listen       80;
	server_name  liangkk.blog.csdn.net;
	
	location / {
          if ($request_uri !~ "\?functionId=|\?.+=.+functionId=|^/startup|^/client\.action|^/strategy|^/crashLog|^/apmRule|^/apmReport|^/statsReport|^/statsConfig|^/basicConfig|^/appPublishUpgrade|^/appPublishStats|^/getUpgradeInfo|^/jdaInfos|^/ideInfos") 
		     {
              return 403;
             }
              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://liangkk/;
              access_log /usr/local/nginx/logs/liangkk_proxy.log;
        }
    }

要禁用对通过 upstream 定义的服务器组的访问,你实际上不能直接“禁用”upstream 块本身,因为 upstream 只是一个配置指令,用于定义一组后端服务器,而不是直接处理请求的入口点。不过,你可以通过以下几种方式间接地实现禁用访问的效果:

通常,最简单最直接的方法是第1种方法:确保 Nginx 配置中没有引用该 upstreamproxy_pass 指令(即注释proxy_pass。这样,就没有任何请求会被转发到这些后端服务器上,从而实现了“禁用访问”的效果。

  1. 不引用 upstream
    在 Nginx 配置中,不要在任何 serverlocation 块中使用 proxy_pass 指令来引用这个 upstream。这样,就没有任何请求会被转发到这个 upstream 定义的服务器组。

  2. 配置返回特定状态码
    如果你想要对尝试访问该 upstream 的请求返回特定的响应(比如 404、403 或其他自定义错误页面),你可以创建一个 server 块,该块匹配所有可能转发到该 upstream 的请求,并返回一个错误码或重定向到另一个页面。

  3. 使用条件判断(不推荐)
    虽然 Nginx 的 if 指令在 serverlocation 块中通常不推荐用于复杂的条件判断,但在某些情况下,你可以用它来根据特定的请求头或变量来阻止请求。然而,对于基于 upstream 的访问控制,这种方法可能不够直接或不够灵活。

  4. 修改 DNS 或网络配置
    如果可能的话,你可以通过修改 DNS 记录或网络路由规则来确保没有任何流量能够到达这些后端服务器。这通常是一个更底层、更全局的解决方案,可能会影响到其他依赖于这些网络设置的服务。

  5. 在服务器上禁用监听
    最后,你也可以直接在后端服务器上禁用相应端口(如 80 或 443)的监听。这可以通过修改服务器的防火墙规则、停止相关的服务或修改服务的配置文件来实现。然而,这种方法需要你有权访问并修改后端服务器的配置。

3、刷新CDN缓存

源站静态文件更新后,CDN不会自动刷新缓存,而是在缓存时间过期后,才会经由用户触发回源获取最新文件。如希望在缓存过期时间之前,实现CDN节点与源站静态文件同步更新,则需要通过CDN控制台-【刷新预取】菜单,或通过API接口,选择相应的刷新操作,将对应文件在CDN节点服务器置为过期。用户下次请求时,CDN将重新向源站请求最新文件,实现缓存更新。

天翼云CDN控制台操作入口:

image.png

标签:禁用,公网,流量,域名,详解,upstream,服务器
From: https://blog.csdn.net/l_liangkk/article/details/140930250

相关文章

  • Tomcat与Nginx的区别详解
    目录引言Tomcat概述Tomcat的历史Tomcat的架构Tomcat的功能Nginx概述Nginx的历史Nginx的架构Nginx的功能Tomcat与Nginx的区别架构上的区别......
  • 【Python&GIS】Arcpy中常用出图函数详解
        出图是每个GISer都要经历的事,但有时候会有许多重复且多且无聊的出图任务,这个时候我们肯定想能不能自动化出图。ArcGIS中的模型创建就可以实现,但是我的数据大部分是在Python中处理的,所以就想能不能使用Python进行批量出图,正好今天跟大家分享一下。这里使用的mxd作为......
  • Modbus RTU与Modbus TCP协议区别详解
    工业自动化领域中,设备之间的数据传输至关重要,而Modbus协议作为一种通信标准,被广泛应用于各类自动化系统。而Modbus协议有两种常见的变体:ModbusRTU和ModbusTCP,下面本文将详细探讨这两种协议的区别。物理层ModbusRTU采用串行通信方式,利用RS-232或RS-485接口进行数据传输。它......
  • 域名注册的流程和须知具体是什么?
    在当今数字化的时代,拥有一个属于自己的网站已经成为许多个人和企业展示形象、开展业务的重要手段。而域名作为网站的标识,其注册流程和相关须知是我们必须了解的重要内容。一、域名注册的流程1、选择域名注册商首先,我们需要在众多的域名注册商中选择一家可靠的。可以通过网络搜索......
  • torch.nn.Linear的维度变换过程详解(有图有公式有代码)
    当初在学习nn.Linear时了解到的博客都是关于一维变换的,比如输入3通道,输出6通道;又比如得到(3,4,4)的特征图,需要进行拉平为(48,)的向量,然后通过nn.Linear(48,10)得到10个输出(分类任务很常见)。nn.Linear除了可以进行分类,主要的作用就是改变维度便于下一个卷积层或线形层的输入。但是在实......
  • Java RMI技术详解与案例分析
    JavaRMI(RemoteMethodInvocation)是一种允许Java虚拟机之间进行通信和交互的技术。它使得远程Java对象能够像本地对象一样被访问和操作,从而简化了分布式应用程序的开发。一些应用依然会使用RMI来实现通信和交互,今天的内容我们来聊聊RMI的那些事儿。一、先来了解一下概念RMI......
  • Android开发 - Movie 类详解
    基本结构Movie类应该包含电影的基本信息。假设我们需要存储以下信息:电影标题(title)电影描述(description)发布年份(releaseYear)评分(rating)海报URL(posterUrl)我们将为这些属性创建一个类!创建Movie类首先定义Movie类并添加相应的属性、构造方法和getter/set......
  • Spring Boot 基于 SCRAM 认证集成 Kafka 的详解
    一、说明在现代微服务架构中,Kafka作为消息中间件被广泛使用,而安全性则是其中的一个关键因素。在本篇文章中,我们将探讨如何在SpringBoot应用中集成Kafka并使用SCRAM认证机制进行安全连接;并实现动态创建账号、ACL权限、Topic,以及生产者和消费者等操作。需要准备一个配......
  • Java RMI技术详解与案例分析
    JavaRMI(RemoteMethodInvocation)是一种允许Java虚拟机之间进行通信和交互的技术。它使得远程Java对象能够像本地对象一样被访问和操作,从而简化了分布式应用程序的开发。一些应用依然会使用RMI来实现通信和交互,今天的内容我们来聊聊RMI的那些事儿。一、先来了解一下概......
  • 详解国内医疗大模型,非常详细收藏我这一篇就够了
    医疗大模型是近年来随着人工智能技术的发展而兴起的一种新型工具,它们利用大数据和先进的机器学习算法来改善医疗服务和医疗决策。下面将介绍几种代表性的医疗大模型,并探讨其未来的发展趋势。医疗大模型概述医疗大模型通常指的是那些基于大规模数据训练的人工智能模型,它们......