如何在 Nginx 中进行速率限制?

速率限制是一种网络流量管理技术,用于控制客户端或用户在单位时间内能够发送到服务器的请求数量。这种限制有助于防止恶意行为、减轻服务器负担,以及确保公平分配资源。在 Nginx 中,速率限制是通过模块和配置指令实现的。

为什么在 Nginx 中进行速率限制是重要的?

  • 防止恶意攻击: 通过限制请求速率,可以减缓或阻止来自单个客户端的恶意攻击,如暴力破解、DDoS 攻击等。
  • 保护服务器资源: 控制请求速率有助于保护服务器资源,确保它们能够为合法用户提供更好的服务。
  • 优化性能: 通过限制过度频繁的请求,可以减轻服务器的负载,提高整体性能。
  • 确保公平使用: 速率限制有助于确保每个用户或客户端在使用服务时都能够获得公平的资源分配,防止某个用户占用过多带宽或连接数。

Nginx 模块和配置

ngx_http_limit_req_module 模块

Nginx 使用 ngx_http_limit_req_module 模块来实现速率限制功能。这个模块允许您为每个 IP 地址或某个 IP 地址范围设置请求速率限制。

http {
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
    
    server {
        location /api/ {
            limit_req zone=mylimit burst=5 nodelay;
            # 其他配置...
        }
    }
}
  • limit_req_zone: 定义共享内存区域,用于存储限制信息。$binary_remote_addr 表示使用客户端 IP 地址作为限制的标识,zone=mylimit:10m 指定了内存区域名称和大小,rate=1r/s 表示每秒允许的请求数。
  • limit_req: 在特定的 location 中启用请求速率限制,burst=5 表示允许突发请求的最大数量,nodelay 表示不延迟请求,而是直接返回 503 错误。

limit_req_zone 指令详解

zone 参数
  • limit_req_zonezone 参数定义了共享内存的名称,用于存储限制信息。可以使用任何字符串作为标识符,但建议使用唯一的名称以避免冲突。
size 参数
  • size 参数指定了共享内存的大小,以限制信息的存储。通常以 mg 为单位,例如 10m 表示 10 兆字节。
rate 参数
  • rate 参数定义了每秒允许的请求数。它是一个浮点数,例如 1r/s 表示每秒允许一个请求。

简单速率限制的实现

按 IP 进行速率限制

使用 ngx_http_limit_req_module 模块,您可以按照以下方式按 IP 进行速率限制:

http {
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
    
    server {
        location /api/ {
            limit_req zone=mylimit burst=20 nodelay;
            # 其他配置...
        }
    }
}

这个配置将对 /api/ 路径下的请求进行限制。每个 IP 地址每秒最多允许 10 次请求,允许突发请求的最大数量为 20,达到限制时不延迟请求。

限制特定 URI 或请求类型

如果您希望对不同的 URI 或请求类型应用不同的速率限制,可以通过配置多个 location 块实现:

http {
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=5r/s;
    
    server {
        location /api/ {
            limit_req zone=mylimit burst=10 nodelay;
            # 其他配置...
        }
        
        location /images/ {
            limit_req zone=mylimit burst=5 nodelay;
            # 其他配置...
        }
    }
}

在这个例子中,/api/ 路径下的请求每秒最多允许 5 次,允许突发请求的最大数量为 10。而对于 /images/ 路径下的请求,速率限制则设置为每秒 5 次,允许突发请求的最大数量为 5。

设定速率限制的阈值

通过调整 rateburst 参数,您可以根据实际需求设定速率限制的阈值。例如,如果您的应用程序对频繁请求有更高的容忍度,可以适当提高阈值:

http {
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=20r/s;
    
    server {
        location /api/ {
            limit_req zone=mylimit burst=50 nodelay;
            # 其他配置...
        }
    }
}

在这个配置中,每个 IP 地址每秒最多允许 20 次请求,允许突发请求的最大数量为 50。

高级速率限制策略

使用 limit_req_status 指令

http {
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=5r/s;

    server {
        location /api/ {
            limit_req zone=mylimit burst=10;
            limit_req_status 503;
            # 其他配置...
        }
    }
}

在这个例子中,当请求超过速率限制时,使用 limit_req_status 指令设置返回的 HTTP 状态码为 503(服务不可用),以告知客户端达到请求速率上限。

配合变量和地图进行更灵活的控制

http {
    map $request_uri $limit_uri {
        default        "default";
        ~^/api/        "api";
        ~^/downloads/  "downloads";
    }

    limit_req_zone $limit_uri:10m rate=2r/s;

    server {
        location / {
            limit_req zone=$limit_uri burst=5;
            # 其他配置...
        }
    }
}

在这个例子中,使用变量和地图根据请求的 URI 动态选择速率限制的内存区域。这种方式使得可以根据不同的 URI 动态调整速率限制策略。

结合条件和动态调整速率限制

http {
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=5r/s;

    server {
        if ($slow_down) {
            set $limit_rate "2";
        }

        location /api/ {
            limit_req zone=mylimit burst=5;
            limit_rate $limit_rate;
            # 其他配置...
        }
    }
}

在这个例子中,结合条件语句和 limit_rate 指令,动态调整速率限制。当变量 $slow_down 的条件满足时,将速率限制降低到每秒 2 个请求。

处理限制超过的请求

返回特定的 HTTP 状态码

http {
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=5r/s;

    server {
        location /api/ {
            limit_req zone=mylimit burst=5;
            limit_req_status 429;
            # 其他配置...
        }
    }
}

在这个例子中,当请求超过速率限制时,使用 limit_req_status 指令设置返回的 HTTP 状态码为 429(过多请求),以提示客户端达到请求速率上限。

使用自定义页面或消息

http {
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=5r/s;

    server {
        location /api/ {
            limit_req zone=mylimit burst=5;
            limit_req_status 503;
            error_page 503 /custom_503.html;
            # 其他配置...
        }
    }
}

在这个例子中,当请求超过速率限制时,通过 error_page 指令将 503 错误映射到 /custom_503.html 页面。这使得可以为用户提供更友好的自定义页面,以解释为什么请求被拒绝。

配置测试

使用 Apache Bench 进行基准测试是评估服务器性能和速率限制效果的有效方法。

ab -n 100 -c 10 http://example.com/

这个命令表示要发送 100 个请求到 http://example.com/,并且并发级别为 10。通过观察 ab 的输出,可以获取关于服务器响应时间、成功请求数量和失败请求数量的信息。

在这个测试中,关注以下几个关键指标:

  • 成功请求数(Completed requests): 表示成功处理的请求数量。
  • 失败请求数(Failed requests): 表示由于速率限制或其他原因未成功处理的请求数量。
  • 平均响应时间(Time per request): 表示每个请求的平均响应时间。

这些指标将帮助您评估服务器在高流量条件下的性能,并验证速率限制是否按预期生效。确保失败请求数量与您配置的速率限制规则一致,以确认速率限制的有效性。

通过多次运行测试,并调整 ab 命令中的请求数和并发级别,您可以更全面地了解 NGINX 速率限制在不同负载条件下的表现。

监控与日志

监控速率限制的性能

Nginx 提供了一些内置的状态信息,可用于监控速率限制的性能。通过访问 /nginx_status 页面,您可以获取有关当前连接、请求处理等信息。可以通过以下方式启用:

server {
    location /nginx_status {
        stub_status on;
        # 其他配置...
    }
}

访问 http://your_server/nginx_status 将显示有关当前 Nginx 运行状态的信息。通过查看 limit_req 部分,您可以了解到关于速率限制的相关信息。

配置日志记录以追踪速率限制事件

http {
    log_format custom_log '$remote_addr - $remote_user [$time_local] "$request" '
                         '$status $body_bytes_sent "$http_referer" '
                         '"$http_user_agent" "$http_x_forwarded_for" '
                         '"$limit_req_status"';

    access_log /var/log/nginx/access.log custom_log;

    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=5r/s;

    server {
        location /api/ {
            limit_req zone=mylimit burst=5;
            limit_req_status 503;
            # 其他配置...
        }
    }
}

在这个例子中,通过定义一个自定义的日志格式 custom_log,我们将 limit_req_status 变量包含在日志中。这使得可以追踪到每个请求的速率限制状态,有助于分析和优化速率限制策略。

性能优化

合理设置共享内存大小

共享内存大小应根据实际需要进行合理设置。如果设置得太小,可能导致限制不准确;如果设置得太大,可能会浪费服务器资源。根据服务器的负载和预期的访问频率,调整 limit_req_zone 中的 size 参数。

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=5r/s;

limit_req_log_level

通过设置 limit_req_log_level 指令,可以控制是否在日志中记录速率限制的信息。如果您只关心特定级别的信息,可以根据需要进行配置。

limit_req_log_level notice;

确保您的 Nginx 配置经过仔细评估,并且只有授权的用户可以访问关键的配置文件。使用适当的文件权限和访问控制列表(ACLs)来限制对配置文件的访问。

对于包含敏感信息的应用程序,强烈建议使用 HTTPS 来加密数据传输。配置 Nginx 来支持 SSL/TLS,以提高通信的安全性。

保持您的 Nginx 服务器和相关模块的更新。及时应用安全更新,以弥补潜在的漏洞,并提高服务器的整体安全性。

使用适当的安全策略,例如防火墙规则,以防止暴力攻击和未经授权的访问。监控日志以及系统和网络活动,及时检测并应对潜在的攻击。

常见问题和解决方案

1、问题:速率限制不生效

  1. 检查配置是否正确: 确保 limit_req_zonelimit_req 指令正确配置,并且在期望的 location 块中。

  2. 检查共享内存大小: 确保 limit_req_zone 中的共享内存大小足够大,能够容纳您期望的限制。

  3. 查看错误日志: 检查 Nginx 错误日志,查看是否有关于速率限制的错误信息。

问题:限制太严格或太宽松

  1. 调整速率和突发值: 根据实际情况,适当调整 rateburst 参数,确保速率限制既不太严格导致合法请求被拒绝,也不太宽松导致无法有效防止恶意行为。

  2. 监控日志: 使用日志记录详细信息,以监控速率限制事件。观察日志可以帮助您更好地调整速率限制策略。

问题:性能问题

  1. 调整共享内存大小: 如果服务器性能受到影响,尝试调整 limit_req_zone 中的共享内存大小,确保它在满足需求的同时不会过大。

  2. 使用异步 IO: 在高负载情况下,考虑使用 Nginx 的异步 IO 功能以提高性能。

总结

在本文中,我们详细介绍了在 Nginx 中进行速率限制的方法。我们从基础开始,讨论了 ngx_http_limit_req_module 模块的使用以及 limit_req_zone 指令的配置。随后,我们深入探讨了不同的速率限制策略,包括按 IP 进行限制、限制特定 URI 或请求类型,以及设定速率限制的阈值。

在高级策略方面,我们讨论了如何使用 limit_req_status 指令、配合变量和地图进行更灵活的控制,以及如何结合条件和动态调整速率限制。处理限制超过的请求时,我们学习了如何返回特定的 HTTP 状态码,以及使用自定义页面或消息来提供更友好的用户体验。

监控与日志是实施速率限制的关键部分,我们讲解了如何监控速率限制的性能,并配置日志记录以追踪速率限制事件。进一步,我们深入研究了性能优化和安全性考虑,提供了一些建议的最佳实践。

最后,我们解决了一些常见问题,包括速率限制不生效、限制太严格或太宽松以及性能问题。通过这些建议和解决方案,希望您能够更好地配置和管理 Nginx 中的速率限制,确保服务器的性能和安全性。


相关文章

  • 如何进行 Nginx HTTPS服务器搭建

    通过本文的介绍,我们详细了解了Nginx的listen指令,它用于配置服务器监听的端口和IP地址。我们学习了基本的语法结构、常见的示例和一些可选的参数。这些知识将帮助您更好地配置Nginx服务器,以满足您的需求。

  • 如何在 Linux 中安装 Fish Shell(带 Starship)?

    Fish Shell是一款现代的、用户友好的命令行 Shell,设计初衷是提供更好的用户体验和强大的功能。它采用友好的语法和强大的自动补全功能,使得命令行操作更加轻松愉快。Starship是一款轻量级的、快速的命令行提示符,它为Shell提供了一个漂亮、高度可定制的提示符。Starship的设计理念是简洁、高效,同时允许用户自由定制外观和显示的信息。Fish Shell允许你创建自定义提示符,包括颜色、图标、以及显示的信息。修改# 自定义提示符end。

  • 如何在 Ubuntu 22.04 上安装 Consul 服务器?

    通过这篇文章,你已经学会了在 Ubuntu 22.04 上安装 Consul 服务器的详细步骤,包括配置集群、服务发现、健康检查、安全性特性等方面。同时,你还了解了如何维护 Consul 和进行故障排除,以及一些进阶主题。Consul 是一个功能强大的工具,适用于构建可靠的微服务架构,希望这篇文章对你有帮助。

  • WebSocket原理详解

    我们知道TCP连接的两端,同一时间里双方都可以主动向对方发送数据。这就是所谓的全双工。而现在使用最广泛的HTTP1.1,也是基于TCP协议的,同一时间里,客户端和服务器只能有一方主动发数据,这就是所谓的半双工。也就是说,好好的全双工TCP,被HTTP用成了半双工。为什么?这是由于HTTP协议设计之初,考虑的是看看网页文本的场景,能做到客户端发起请求再由服务器响应,就够了,根本就没考虑网页游戏这种,客户端和服务器之间都要互相主动发大量数据的场景。所以为了更好的支持这样的场景,我们需要另外一个。

  • 【Linux】信号保存与信号捕捉处理

    介绍信号的保存,理解信号在操作系统中的保存方式,理解系统中信号捕捉的处理过程以及介绍信号的其它知识!

  • DockerUI如何部署结合内网穿透实现公网环境管理本地docker容器

    DockerUI是一个docker容器镜像的可视化图形化管理工具。DockerUI可以用来轻松构建、管理和维护docker环境。它是完全开源且免费的。基于容器安装方式,部署方便高效,浏览和维护docker单节点或集群节点worker和manager。DockerUI具有易于使用的界面。它不需要记住 docker 指令。只需下载镜像即可立即加入并完成部署。使用DockerUI并结合cpolar内网穿透可以更加轻松的管理docker和swarm,实现后台公网访问并管理,视觉性更加直观,后台开发更加便利。

  • 【Linux】linux自动化构建工具make/makefile

    是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。当对文件的内容做修改时,该文件的Modify和Change的时间都会被修改,所以当改变文件的属性时,修改时间发生了变化,再次make时,会比源文件的最近修改时间新。这里的mytest-d表示的是目标文件,test.c表示的是要编译的源文件,第二行则是编译指令。是一个命令,用来执行makefile里面编写的编译命令。

  • 如何在 Linux 命令行中检查 CPU 使用率

    使用top来实时查看系统资源的使用情况,特别是 CPU 和内存的使用率。使用sar定期收集系统性能数据,以便后续分析历史性能趋势。使用mpstat来监控多核 CPU 的使用率,了解每个核心的性能状况。使用perf进行更深入的性能分析,包括函数调用图、指令和缓存的分析等。使用strace跟踪系统调用,解决程序执行中的异常情况。使用topvmstat和sar进行实时和历史性能监控,以便了解系统整体的健康状况。使用mpstatperf和strace进行更深入的 CPU 使用率分析,找出潜在的性能瓶颈。

  • 同样都是光纤接入设备,OLT和ONT到底有啥区别?

    你好,这里是网络技术联盟站,我是瑞哥。光纤通信系统在现代通信网络中扮演着至关重要的角色。为了实现高效、快速的光纤接入,OLT(Optical Line Terminal)和ONT(Optical Network Terminal)这两种关键设备发挥着不可替代的作用。本文将深入研究OLT和ONT之间的主要区别,解释它们各自的功能、硬件特点、通信协议以及应用场景。

  • 【Docker】linux、nginx、容器镜像三者基本概念

    由于在工作中接触到的都是windows操作系统,服务器也是,所以对于linux系统就比较陌生。对于windows操作系统,web服务器一般都是使用IIS。那对于linux系统,web服务器一般使用的是nginx。不同操作系统,web服务器自然不一样,但是目的都是一样的,都是为了渲染和呈现网站内容。因此,基本概念还是要了解一下。

  • 10个常用python自动化脚本

    大家好,Python凭借其简单和通用性,能够为解决每天重复同样的工作提供最佳方案。本文将探索10个Python脚本,这些脚本可以帮助自动化完成任务,提高工作效率。无论是开发者、数据分析师还是仅仅想简化工作流程的普通用户,这些脚本都能提供帮助。

  • 服务器与普通电脑的区别,普通电脑可以当作服务器用吗?

    服务器在我们日常应用中非常常见,手机APP、手机游戏、PC游戏、小程序、网站等等都需要部署在服务器上,为我们提供各种计算、应用服务。服务器也是计算机的一种,虽然内部结构相差不大,但是服务器的运行速度更快、负载更高、成本更高。服务器与普通电脑主要有哪些区别,让我们来看下吧!

  • 高清网络视频监控系统技术方案

    随着数字技术、计算机技术和网络技术的发展,基于互联网的各种业务呈几何指数规律飞速增长,远程视频监控作为基于互联网的一种全新业务也得到了飞速的发展。高清网络摄像机IPC,高清硬盘录像机NVR/DVR等设备得到很大的发展。

  • 什么是BGP路由属性?BGP13条选路规则你还记得吗?

    BGP路由属性是一组参数,用于进一步描述特定路由的属性。这些属性的存在使得BGP能够根据网络的需求对路由进行精细的控制。在BGP的路由更新消息中,这些属性提供了丰富的信息,从而让网络管理员能够实施各种策略,例如负载均衡、路径选择和拓扑优化。公认必须遵循公认可选可选过渡可选非过渡BGP路由属性作为BGP协议的核心组成部分,在互联网路由中扮演着关键的角色。本文详细探讨了BGP路由属性的分类和功能,以及它们在网络设计和优化中的重要性。公认必须遵循属性。

  • Jenkins的环境部署,(打包、发布、部署、自动化测试)

    例如Jenkins.war下载地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.150.3/jenkins。4.Tomcat成功启动后,启动浏览器,在浏览器的地址栏里输入:http://localhost:8080/ ,然后回车,进入如下画面,表示Tomcat已经正确安装。选择合适的进行下载,例如:https://tomcat.apache.org/download-90.cgi。①新建TOMCAT_HOME变量。

  • IntelliJ IDEA如何使用固定地址公网远程访问本地Mysql数据库

    IDEA作为Java开发最主力的工具,在开发过程中需要经常用到数据库,如Mysql数据库,但是在IDEA中只能连接本地数据库,有时候需要访问其他地方如家里或者公司的数据库,将无法访问,内网的局限性导致我们只能在同一网络访问,无法跨网络访问,所以,本例将介绍如何在异地也可以实现远程连接本地的数据库,这里我们需要用到一个工具,叫Cpolar.隧道创建成功后,点击左侧的状态——在线隧道列表,查看所生成的公网TCP协议的地址,该地址就是公网地址,我们可以在任何设备中的IDEA中都可以访问。

  • Inis博客系统本地部署结合内网穿透实现远程访问本地站点

    互联网技术总在不断进步,新技术和新软件也会来带更多功能,就以最常见的个人博客系统,也在不断推陈出新,发掘出更多功能和特色。从早期少量自定义和编辑功能,发展到现在的支持各种自定义模块和外观,以及更多更全的支持软件适配(包括php程序、数据库程序等)。今天,笔者就为大家介绍,如何在Ubuntu系统上部署新版Inis博客系统,并使用cpolar创建的内网穿透数据隧道,将Inis博客网站发布到公共互联网上。

  • 千兆网口、2.5G端口、5G端口有啥区别?如何选择?

    通过本文对千兆以太网、2.5G 以太网和5G 以太网的详细介绍,我们深入了解了它们的技术原理、优势、局限性以及在不同行业和应用场景中的应用。千兆以太网适用于一般用途,而2.5G网口和5G网口则更适用于对速度和性能有更高要求的专业场景。在做决策时,始终确保您的选择符合当前需求,并具备未来的可扩展性。

  • 文件传输协议:FTP、TFTP、SFTP和SCP

    你好,这里是网络技术联盟站。文件传输协议在计算机网络中扮演着关键的角色,为用户提供了在网络上共享和传输文件的标准化方式。本文将深入介绍四种常见的文件传输协议:FTP、TFTP、SFTP和SCP,探讨它们的工作原理、特点以及在不同场景下的应用。

  • 2024年了,Fedora和Ubuntu,哪个更适合工程师使用?

    在Fedora与Ubuntu的比较中,我们深入探讨了它们在安装和配置、桌面环境、软件包管理、系统更新与稳定性、社区支持、性能、安全性、容器化支持、桌面用户体验、开发者工具、虚拟化支持、硬件兼容性、多版本支持、跨平台支持等方面的差异。最终,选择Fedora还是Ubuntu取决于您的个人需求和偏好。如果您是一个追求最新技术和功能的开发者,喜欢滚动更新的模式,那么Fedora可能更适合您。如果您更注重系统的稳定性,希望在长期内获得支持,并且对桌面和服务器环境都有需求,那么Ubuntu可能更符合您的期望。

  • 如何强制Linux用户在下次登录时更改密码?

    在Linux系统中,用户账户的密码信息存储在和文件中。其中,文件包含用户的基本信息,而文件包含用户的加密密码以及与密码相关的设置。PAM模块允许管理员定义在用户登录、更改密码等操作时执行的任务。在密码管理方面,我们关注的是模块。本文介绍了如何强制Linux用户在下次登录时更改密码,并详细讨论了密码管理的各个方面。通过配置密码过期策略、使用PAM模块增加密码复杂性要求、设置强制密码更改通知、批量更改用户密码以及自动化密码更改过程,管理员可以提高系统的安全性,降低密码被滥用的风险。

  • 计算机网络中,距离矢量协议和链路状态协议到底有啥区别?

    距离矢量协议和链路状态协议都在不同的情境下展现出各自的优势和劣势。在选择使用哪种协议时,需要考虑网络的规模、带宽利用率、安全性需求等因素。对于小型网络或对带宽敏感的场景,距离矢量协议可能更为合适。而在大型网络、需要更好安全性和更快收敛速度的情况下,链路状态协议可能更具优势。在实际应用中,有时候也会采用混合使用这两种协议的方式,以充分发挥它们各自的优势,提高网络的性能和可靠性。这使得在不同的网络环境中选择合适的路由协议成为一个复杂而重要的决策。境中的优劣势。

  • SCCP 和 MTP3 之间有啥区别?

    通过详细介绍 SCCP 和 MTP3,以及它们之间的比较和协同工作,我们深入了解了它们在信令传输协议栈中的角色和功能。在设计和管理电信网络时,对 SCCP 和 MTP3 的理解是至关重要的,因为它们直接影响信令的可靠性、灵活性和性能。这样的理解有助于工程师和网络管理员更好地优化网络配置,确保通信系统的稳定运行。

  • 什么是虚拟路由器?与传统物理路由器有啥区别?

    虚拟路由器(Virtual Router)是一种软件功能,它在x86服务器硬件上以虚拟机实例的形式部署,提供基于云的网络服务。运行在虚拟化平台上的虚拟路由器承担着多种功能,包括路由、交换、安全和VPN等。通过这种虚拟化的方式,用户可以在云环境中便捷地配置和管理网络,实现高度灵活性和可定制性,为用户提供了强大的网络通信服务。虚拟机技术是虚拟路由器中常用的虚拟化手段之一。通过使用虚拟机管理程序(如VMware、KVM等),虚拟路由器可以在一台物理服务器上同时运行多个虚拟实例。

  • 网络安全之道:DMZ与端口转发有啥区别?

    通过本文的介绍,我们深入了解了DMZ和端口转发这两个网络安全和应用配置中的重要概念。DMZ在网络中扮演了重要的缓冲带角色,既确保了对外服务的可用性,又有效地隔离了来自外部的潜在威胁。端口转发通过设置网络设备的规则,将外部网络的请求定向到内部网络的特定主机或服务。这一技术为远程访问、个人服务器搭建等提供了便利。结合DMZ和端口转发,可以实现更灵活的网络架构。DMZ中部署公共服务,通过端口转发映射外部请求,不仅提高了网络的可用性,也增强了网络的安全性。

  • 一文带你全方位了解 Shell 脚本,给力!

    使用等号(=)给变量赋值,并通过美元符号($)引用变量的值。# 变量的定义和使用通过本文的学习,您已经了解了如何为 Linux 命令创建脚本的基础知识和高级技巧。Shell 脚本是一种强大的工具,通过结合 Linux 命令和脚本编程,您可以实现自动化任务、系统管理以及日志分析等各种功能。深入学习和实践将使您成为一个熟练的脚本程序员,能够更高效地处理各种任务。