Nginx 安全防护与 HTTPS 部署实战全解析

news2026/3/17 7:43:47
在互联网技术高速发展的当下Web 服务的安全性和可靠性成为企业与开发者的核心关注重点。Nginx 作为高性能 Web 服务器和反向代理工具凭借轻量级、高并发处理能力和灵活模块化设计占据全球近三分之一的 Web 服务器市场份额。但随着 DDoS、SQL 注入、恶意爬虫等网络攻击手段不断升级以及 GDPR、等保 2.0 等数据隐私保护法规的要求掌握 Nginx 安全防护策略与 HTTPS 部署能力成为运维工程师和开发者的必备技能。本文将从核心安全配置、高级防护、HTTPS 部署三大维度结合实操命令和配置示例详细讲解 Nginx 安全防护的实战方法。一、Nginx 核心安全配置核心安全配置是 Nginx 安全防护的基础涵盖编译安装、版本号隐藏、危险请求方法限制、CC 攻击防御、防盗链配置等关键环节每一步配置都能从基础层面提升 Nginx 服务的安全性。1.1 编译安装 Nginx编译安装 Nginx 能自主选择所需模块满足安全防护的定制化需求安装前需准备依赖环境、创建运行用户及目录后续完成编译安装和系统服务配置。1.1.1 安装支持软件Nginx 运行依赖 pcre、zlib、openssl 等开发包通过 dnf 命令一键安装bash运行[rootlocalhost ~]# dnf install -y gcc make pcre-devel zlib-devel openssl-devel perl-ExtUtils-MakeMaker git wget tar1.1.2 创建运行用户、组和日志目录为 Nginx 创建无登录权限的专用运行用户同时建立日志目录并赋予对应权限避免权限过大带来的安全风险bash运行[rootlocalhost ]# useradd -M -s /sbin/nologin nginx [rootlocalhost ]# mkdir -p /var/log/nginx [rootlocalhost ]# chown -R nginx:nginx /var/log/nginx1.1.3 编译安装 Nginx以 Nginx 1.26.3 为例解压安装包后通过./configure配置编译参数开启 SSL、realip、stub_status 等安全相关模块再完成编译安装和软链接创建bash运行[rootlocalhost ~]# tar zxf nginx-1.26.3.tar.gz [rootlocalhost~]# cd nginx-1.26.3 [rootlocalhost nginx-1.26.3]#./configure \ --prefix/usr/local/nginx\ --usernginx\ --groupnginx\ --with-http_ssl_module \ --with-http_v2_module\ --with-http_realip_module\ --with-http_stub_status_module\ --with-http_gzip_static_module\ --with-pcre \ --with-stream [rootlocalhost nginx-1.26.3]# make make install # 为主程序创建软链接方便全局调用 [rootlocalhost nginx-1.26.3]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/1.1.4 添加 Nginx 系统服务创建 systemd 服务文件将 Nginx 纳入系统服务管理支持开机自启、启停、重载等操作ini[rootlocalhost ]# vi /lib/systemd/system/nginx.service [Unit] DescriptionThe NGINX HTTP and reverse proxy server Afternetwork.target [Service] Typeforking ExecStartPre/usr/local/sbin/nginx -t ExecStart/usr/local/sbin/nginx ExecReload/usr/local/sbin/nginx -s reload ExecStop/bin/kill -s QUIT $MAINPID TimeoutStopSec5 KillModeprocess PrivateTmptrue Userroot Grouproot [Install] WantedBymulti-user.target配置完成后重载系统服务启动并设置 Nginx 开机自启bash运行[rootlocalhost ~]# systemctl daemon-reload [rootlocalhost~]# systemctl start nginx [rootlocalhost ~]# systemctl enable nginx1.2 隐藏 Nginx 版本号Nginx 默认会在响应头中暴露版本号攻击者可针对特定版本的漏洞发起攻击因此生产环境中必须隐藏版本号。1.2.1 查看当前版本号可通过 curl 命令查看 Nginx 版本号确认版本信息是否暴露bash运行[rootlocalhost ~]# curl -I 192.168.10.101 # 响应头中会显示Server: nginx/1.26.3版本号暴露1.2.2 修改配置隐藏版本号编辑 Nginx 主配置文件添加server_tokens off;指令关闭版本号显示bash运行[rootlocalhost ]# vi /usr/local/nginx/conf/nginx.conf在 http 块中添加配置nginxhttp { include mime.types; default_type application/octet-stream; server_tokens off; # 隐藏Nginx版本号 # 其他全局配置... }1.2.3 验证配置效果检查配置文件语法并重载 Nginx再次执行 curl 命令验证版本号是否隐藏bash运行[rootlocalhost ~]# nginx -t [rootlocalhost ~]# nginx -s reload [rootlocalhost ~]# curl -I 192.168.10.101 # 响应头显示Server: nginx版本号成功隐藏1.3 限制危险请求方法HTTP 协议包含 GET、POST、PUT、DELETE、TRACE、CONNECT 等多种请求方法其中 PUT/DELETE 存在文件修改风险TRACE 易引发 XST 攻击CONNECT 可能导致代理滥用仅需保留 GET、HEAD、POST 三种常用安全方法非白名单方法直接返回 444无响应关闭连接。首先梳理 HTTP 常用请求方法的功能和安全风险如下表所示表格HTTP 方法功能描述安全风险GET请求获取 Request-URI 标识的资源参数暴露在 URL安全性较差无数据长度限制但 URL 有长度限制POST在 Request-URI 标识的资源后附加新数据无明显安全风险参数隐藏在请求体适合提交敏感信息HEAD获取资源的响应消息报头无明显安全风险仅返回报头不传输正文PUT要求服务器存储资源以 Request-URI 为标识可随意修改服务器文件存在数据篡改风险DELETE要求服务器删除 Request-URI 标识的资源可随意删除服务器文件存在数据丢失风险TRACE回显服务器收到的请求易引发跨站追踪XST攻击窃取用户 cookieCONNECT建立隧道连接用于代理通信可能被滥用为代理导致服务器资源消耗或网络攻击同时GET 和 POST 作为最常用的两种方法在使用场景和安全性上差异显著具体对比如下表表格对比维度GET 方法POST 方法数据长度限制URL 最大长度 2048 个字符限制提交数据大小无限制适合提交大量数据缓存特性可被浏览器缓存请求记录保存在历史中不被浏览器缓存数据无历史留存安全性参数暴露在 URL易被窃取安全性差参数隐藏在请求体不记录在日志 / 历史安全性高书签 / 历史可收藏为书签参数保留在浏览器历史不可收藏为书签参数无历史留存刷新 / 后退刷新 / 后退无副作用不会重复提交刷新 / 后退会重新提交数据浏览器会给出提示1.3.1 配置限制危险请求方法编辑 Nginx 主配置文件在 server 块中添加正则匹配规则限制请求方法bash运行[rootlocalhost ]# vi /usr/local/nginx/conf/nginx.conf添加配置nginxserver { # 其他server配置... if ($request_method !~ ^(GET|HEAD|POST)$){ return 444; } }1.3.2 验证配置效果重载 Nginx 后通过 curl 命令测试 PUT、DELETE 等危险方法验证是否返回空响应bash运行[rootlocalhost ~]# nginx -t nginx -s reload # 测试PUT请求 [rootlocalhost ~]# curl -XPUT -I 192.168.10.101 # 结果curl: (52) Empty reply from server验证成功注意CONNECT 请求若目标非代理服务器Nginx 核心层会直接拦截并返回 400现代 Nginx 默认禁用 TRACE 方法直接返回 405因此这两种方法测试时不会返回 444属于正常现象。1.4 请求限制CC 攻击防御CC 攻击即挑战崩溃攻击通过大量合法或伪造的小流量请求耗尽服务器资源导致正常用户无法访问。Nginx 通过limit_req模块限制请求速率和并发连接数从源头防御 CC 攻击。1.4.1 配置请求速率限制编辑 Nginx 主配置文件在 http 块中定义共享内存区在 server/location 块中实施速率限制bash运行[rootlocalhost ]# vi /usr/local/nginx/conf/nginx.conf添加配置nginxhttp { # 定义限制区10M内存存储客户端IP每个IP每秒最多10个请求 limit_req_zone $binary_remote_addr zonereq_limit:10m rate10r/s; # 其他全局配置... server { # 其他server配置... location / { root html; index index.html index.php; # 绑定限制区突发请求等候区20个无延迟处理 limit_req zonereq_limit burst20 nodelay; } } }核心参数说明如下表表格配置参数功能说明limit_req_zone定义请求限制的共享内存区为全局配置$binary_remote_addrNginx 内置变量存储客户端 IP 的二进制格式节省内存zonereq_limit:10m创建名为 req_limit 的共享内存区大小 10M用于存储客户端 IP 和请求计数rate10r/s限制速率每个客户端 IP 每秒最多发起 10 个请求limit_req实施请求速率限制为局部配置server/location 块burst20设置突发请求等候区超出速率限制的请求进入等候区最多容纳 20 个nodelay立即处理等候区的突发请求无延迟等候区占满后多余请求直接返回 5031.4.2 压力测试验证配置使用 ApacheBenchab工具进行压力测试验证 CC 攻击防御效果步骤如下安装 ab 测试工具bash运行[rootlocalhost ]# dnf install httpd-tools -y发起压力测试模拟 30 个并发用户共发起 300 个请求bash运行[rootlocalhost ]# ab -n 300 -c 30 http://192.168.10.101/验证测试结果查看 Nginx 访问日志统计 503 状态码的请求数大量请求返回 503 说明配置生效bash运行[rootlocalhost ]# tail -300 /usr/local/nginx/logs/access.log | grep -c 503 # 结果示例279说明279个请求被拦截防御生效1.5 防盗链配置盗链是指未经授权的网站盗用其他网站的静态资源如图片、视频、音频不仅侵犯版权还会消耗原网站的带宽和服务器资源影响正常用户访问。Nginx 通过验证请求的 Referer 字段实现防盗链功能仅允许信任域名访问资源非信任域名返回 403 禁止访问。本次防盗链实验需要两台 OpenEuler 主机环境准备如下表表格主机类型域名IP 地址角色服务OpenEulerwww.aaa.com192.168.10.101源主机NginxOpenEulerwww.bbb.com192.168.10.102盗链主机HTTPD1.5.1 环境准备配置域名解析修改 Windows 和两台 OpenEuler 主机的 hosts 文件添加域名与 IP 的映射关系plaintext192.168.10.101 www.aaa.com 192.168.10.102 www.bbb.com源主机部署资源将图片文件 kgc.png 放到 Nginx 工作目录编辑首页文件引用该图片bash运行# 查看Nginx工作目录文件 [rootlocalhost ~]# ls /usr/local/nginx/html # 编辑首页文件 [rootlocalhost ]# vi /usr/local/nginx/html/index.html html body h1aaa It work!/h1 img srckgc.png/ /body /html盗链主机配置安装 HTTPD 服务编辑首页文件直接引用源主机的图片资源bash运行[rootlocalhost]# dnf -y install httpd [rootlocalhost ~]# vi /var/www/html/index.html html body h1bbb It work!/h1 img srchttp://www.aaa.com/kgc.png/ /body /html # 关闭防火墙启动HTTPD服务 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# systemctl start httpd测试盗链效果访问盗链主机域名www.bbb.com能正常显示源主机的图片说明盗链成功。1.5.2 配置 Nginx 防盗链编辑 Nginx 主配置文件在 server 块中添加防盗链规则仅允许aaa.com及其子域名访问图片资源bash运行[rootlocalhost ]# vi /usr/local/nginx/conf/nginx.conf添加配置nginxserver { # 其他server配置... location ~* \.(jpg|gif|png|swf)$ { root html; # 设置信任的域名 valid_referers aaa.com *.aaa.com; # 非信任域名返回403 if ($invalid_referer) { return 403; } } }核心配置说明如下表表格配置项功能说明location ~* .(jpggifpngswf)$正则匹配~* 表示不区分大小写匹配以 jpg、gif、png、swf 结尾的静态资源valid_referers设置信任的 Referer 来源仅这些域名的请求能访问资源$invalid_refererNginx 内置变量若请求的 Referer 不在 valid_referers 列表中该变量值为 1return 403非信任域名的请求返回 403 Forbidden禁止访问资源1.5.3 验证防盗链效果检查配置文件语法并重载 Nginx再次访问盗链主机域名www.bbb.com图片无法显示浏览器开发者工具中图片请求返回 403说明防盗链配置生效。bash运行[rootlocalhost ~]# nginx -t nginx -s reload二、Nginx 高级防护核心安全配置解决了基础的安全问题而高级防护则针对动态攻击场景进行优化其中动态黑名单是 Nginx 实时拦截恶意请求的重要机制相比静态的 allow/deny 指令动态黑名单可在不重启 Nginx 的情况下更新封禁 IP灵活应对高并发、多变的网络攻击。2.1 动态黑名单基础配置动态黑名单基于 Nginx 的geo模块实现geo模块专门处理 IP 地址相关逻辑可根据客户端 IP 生成自定义变量用于后续的访问控制判断。2.1.1 创建黑名单配置文件单独创建黑名单配置文件方便管理封禁的 IP / 网段无需修改主配置文件配置文件中定义 IP / 网段及对应的封禁动作标记bash运行[rootlocalhost ]# vi /usr/local/nginx/conf/blockips.conf # 封禁整个网段标记为1 192.168.1.0/24 1; # 封禁单个IP标记为1 192.168.10.102 1;IP 地址后的标记值对应不同的封禁动作说明如下表表格标记值封禁动作适用场景0允许访问白名单 IP / 默认规则1返回 403 Forbidden普通恶意请求 IP2返回 444 无响应关闭连接高频恶意请求 IP静默拦截3返回 503 Service Unavailable需临时封禁的 IP模拟服务不可用2.1.2 主配置文件引入黑名单编辑 Nginx 主配置文件在 http 块中通过geo模块引入黑名单配置文件定义自定义变量$block_ip并在 server 块中添加封禁逻辑bash运行[root localhost ]# vi /usr/local/nginx/conf/nginx.conf添加配置nginxhttp { # 配置geo模块定义动态黑名单变量 geo $block_ip { default 0; # 默认允许所有IP访问标记为0 include /usr/local/nginx/conf/blockips.conf; # 引入黑名单配置 } # 其他全局配置... server { # 其他server配置... # 封禁逻辑若标记值非0返回403 if ($block_ip) { return 403; } } }2.1.3 验证动态黑名单效果检查配置语法并重载 Nginx使用被封禁的 IP如 192.168.10.102访问 Nginx 服务验证是否返回 403bash运行[rootlocalhost ~]# nginx -t nginx -s reload # 被封禁IP测试访问 [rootlocalhost]# curl 192.168.10.101 # 结果返回403 Forbidden页面封禁生效2.2 自动添加黑名单手动维护黑名单效率较低可通过 Shell 脚本实现自动封禁高频访问的恶意 IP脚本统计 Nginx 访问日志中访问次数超过阈值的 IP自动写入黑名单配置文件实现实时拦截。2.2.1 编写自动封禁脚本创建 Shell 脚本统计访问日志中访问次数超过 100 次的 IP自动添加到 blockips.conf 文件bash运行[rootlocalhost ]# vi /root/auto_block_ip.sh #!/bin/bash # 自动封禁Nginx访问日志中访问超过100次的IP # 统计IP访问次数排序后筛选出超过100次的IP写入黑名单 awk {print $1} /var/log/nginx/access.log | sort | uniq -c | sort -nr | awk {if($1100) print $2 1;} /usr/local/nginx/conf/blockips.conf # 重载Nginx使配置生效 /usr/local/sbin/nginx -s reload2.2.2 脚本核心命令说明脚本中各命令的功能如下表表格命令功能说明awk {print $1}提取 Nginx 访问日志中的第一列客户端 IPsort对提取的 IP 进行排序方便后续去重统计uniq -c对排序后的 IP 去重并统计每个 IP 的访问次数行首显示次数sort -nr按访问次数从高到低排序n 表示数值排序r 表示反向排序awk {if($1100) print $2 1;}筛选访问次数超过 100 次的 IP按黑名单格式写入文件nginx -s reload重载 Nginx使新的黑名单配置立即生效2.2.3 配置脚本定时执行通过 crontab 设置脚本定时执行实现黑名单的自动更新例如每分钟执行一次bash运行# 赋予脚本执行权限 [rootlocalhost ]# chmod x /root/auto_block_ip.sh # 编辑crontab定时任务 [rootlocalhost ]# crontab -e # 添加定时任务每分钟执行一次脚本 */1 * * * * /root/auto_block_ip.sh # 重启crond服务使定时任务生效 [rootlocalhost ]# systemctl restart crond [rootlocalhost ]# systemctl enable crond三、Nginx HTTPS 部署HTTP 协议采用明文传输存在窃听、篡改、冒充三大安全风险而 HTTPS 是 HTTPSSL/TLS 的加密传输协议通过混合加密方式保证数据传输的机密性、完整性、身份认证和不可否认性同时新一代 HTTP/2 协议、搜索引擎排名、小程序 / APP 开发均要求基于 HTTPS 实现。本节详细讲解 HTTPS 的通信原理和 Nginx 的 HTTPS 配置实战。3.1 HTTPS 核心概念3.1.1 HTTP 的安全缺陷HTTP 协议因明文传输在数据传输过程中存在三大核心安全风险具体如下表表格安全风险表现形式危害窃听风险中间人拦截客户端与服务器之间的明文通信内容敏感信息如账号、密码、转账信息被窃取篡改风险中间人拦截并修改明文报文再发送给对方数据被篡改如转账金额被修改、内容被替换冒充风险中间人伪装成合法服务器与客户端通信钓鱼网站客户端误将恶意服务器当作合法服务器泄露信息3.1.2 安全通信的四大原则HTTPS 为解决 HTTP 的安全缺陷而生满足安全通信的四大核心原则也是加密通信的基本要求机密性对传输数据进行加密即使被中间人拦截也无法解析出明文完整性通过摘要算法验证数据数据传输过程中若被篡改接收方能立即识别身份认证通过数字证书验证通信双方的真实身份避免冒充风险不可否认通过数字签名确认行为归属通信双方无法否认已发生的操作。3.1.3 SSL/TLS 协议SSL/TLS 是 HTTPS 的加密核心SSL 由 Netscape 公司开发后被 IETF 标准化为 TLSTLS 是 SSL 的后续版本逐步取代 SSL 成为主流。SSL/TLS 协议的版本演进和现状如下表表格协议版本发布时间特点现状SSL 1.0未公开发布基础版本存在大量安全漏洞废弃SSL 2.01995 年存在严重安全漏洞无完整性校验废弃SSL 3.01996 年修复 SSL 2.0 漏洞引入 MAC 校验2014 年因 POODLE 攻击漏洞被淘汰TLS 1.01999 年基于 SSL 3.0 改进引入新的加密算法2021 年正式弃用TLS 1.12006 年增加对 CBC 攻击的保护优化加密算法2021 年正式弃用TLS 1.22008 年引入 AES 等强加密算法支持 SHA-256 摘要目前主流广泛使用TLS 1.32018 年简化握手过程提升性能移除弱加密算法未来主流逐步普及3.1.4 HTTPS 混合加密通信原理HTTPS 采用非对称加密 对称加密的混合加密方式结合了两种加密方式的优点对称加密加解密效率高适合大量数据传输非对称加密安全性高适合传输对称加密的密钥。同时通过数字证书解决非对称加密中公钥的传输信任问题整体通信流程分为三个核心阶段如下表表格通信阶段加密方式核心功能具体流程证书验证阶段非对称加密CA 私钥签名 客户端公钥验签验证服务器身份获取合法的服务器公钥1. 客户端向服务器发起 HTTPS 请求2. 服务器向客户端发送由 CA 签名的数字证书包含服务器公钥、域名等信息3. 客户端使用系统内置的 CA 根证书公钥验证证书签名确认证书合法4. 证书验证通过后客户端从证书中提取服务器公钥。密钥协商阶段非对称加密服务器公钥加密安全传输对称加密的会话密钥1. 客户端随机生成一个对称加密的会话密钥2. 客户端使用服务器公钥加密会话密钥发送给服务器3. 服务器使用自身的私钥解密获取会话密钥。数据传输阶段对称加密会话密钥高效、安全传输业务数据客户端和服务器使用协商好的会话密钥对后续的所有通信数据进行对称加解密实现明文数据的加密传输。关键问题说明为什么不直接使用非对称加密传输数据非对称加密的加解密效率远低于对称加密若直接用于大量业务数据传输会严重降低服务器性能因此仅用于传输对称加密的会话密钥。中间人能否伪造数字证书不能。数字证书中包含唯一的服务器域名CA 机构仅为合法的域名持有者颁发证书同时客户端会验证证书的域名与访问域名是否一致伪造证书会因域名不匹配或签名验证失败被拒绝。CA 公钥如何保证安全CA 根证书的公钥内置在操作系统、浏览器中无需通过网络传输从源头避免了公钥被中间人调包的风险。3.2 Nginx HTTPS 证书配置HTTPS 证书分为CA 签名证书和自签名证书CA 签名证书由受信任的第三方 CA 机构如 Lets Encrypt、DigiCert签发公网环境推荐使用自签名证书由自己签发无第三方信任仅适用于测试、内部环境。本节先讲解自签名证书的生成和配置再说明 CA 签名证书的申请流程。3.2.1 生成自签名证书使用 OpenSSL 工具生成自签名证书步骤如下创建证书存储目录bash运行[rootlocalhost ]# mkdir -p /etc/nginx/ssl生成自签名证书和私钥bash运行[rootlocalhost ~]# openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /etc/nginx/ssl/nginx-selfsigned.key \ -out /etc/nginx/ssl/nginx-selfsigned.crt \ -subj /CCN/STBeijing/LBeijing/OMyOrg/CNlocalhost命令参数说明如下表表格参数功能说明-x509生成自签名证书而非证书签名请求CSR-nodes不加密私钥文件避免 Nginx 启动时需要输入密码-days 365设置证书的有效期限此处为 1 年-newkey rsa:2048同时生成新的 RSA 私钥密钥长度 2048 位安全性足够性能适中-keyout指定私钥文件的保存路径和名称-out指定自签名证书文件的保存路径和名称-subj设置证书的主题信息按需修改C 国家CN、ST 省份、L 城市、O 组织、CN 域名 / IP3.2.2 CA 签名证书申请流程公网环境需使用 CA 签名证书以免费的 Lets Encrypt 为例申请流程如下生成服务器私钥和 CSR证书签名请求文件将 CSR 文件提交给 Lets Encrypt CA 机构验证域名的所有权如 HTTP 验证、DNS 验证验证通过后CA 机构使用自身私钥对证书签名生成最终的 CA 签名证书下载 CA 签名证书和中间证书部署到 Nginx 服务器。3.2.3 Nginx 启用 HTTPS编辑 Nginx 主配置文件配置 443 端口的 HTTPS 服务指定证书和私钥路径同时配置 SSL 协议和加密套件提升安全性并将 80 端口的 HTTP 请求重定向到 HTTPS实现全站加密。bash运行[rootlocalhost ]# vi /usr/local/nginx/conf/nginx.conf添加 / 修改配置nginx# 80端口HTTP请求重定向到443端口HTTPS server { listen 80; server_name localhost; # 301永久重定向到HTTPS return 301 https://$host$request_uri; } # 443端口HTTPS服务配置 server { listen 443 ssl; server_name localhost; # 指定证书和私钥路径 ssl_certificate /etc/nginx/ssl/nginx-selfsigned.crt; ssl_certificate_key /etc/nginx/ssl/nginx-selfsigned.key; # 配置SSL协议仅启用TLS1.2和TLS1.3禁用低版本协议 ssl_protocols TLSv1.2 TLSv1.3; # 配置强加密套件优先使用GCM模式的加密算法 ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256; # 优先使用服务器端的加密套件选择 ssl_prefer_server_ciphers on; # 网站根目录和默认首页 location / { root /usr/local/nginx/html; index index.html; } }注意HTTP 重定向 HTTPS 的配置需单独写在一个 server 块中不能写在 HTTPS 的 server 块内否则会导致无限重定向。3.2.4 验证 HTTPS 配置检查配置文件语法并重载 Nginxbash运行[rootlocalhost ~]# nginx -t nginx -s reload浏览器验证访问https://服务器IP由于是自签名证书浏览器会提示 “连接不是私密连接”选择 “高级”-“继续前往”测试环境可忽略该警告成功访问网站说明 HTTPS 配置生效。命令行验证通过 curl 命令测试忽略证书验证-k 参数查看响应头是否包含 HTTPS 相关信息bash运行[rootlocalhost ~]# curl -k -I https://192.168.10.101 # 响应头显示Server: nginx、SSL协议版本等信息验证成功四、总结本文从实战角度出发详细讲解了 Nginx 的核心安全配置、高级防护和 HTTPS 部署的全流程核心要点总结如下核心安全配置是基础通过编译安装定制模块、隐藏版本号、限制危险请求方法、防御 CC 攻击、配置防盗链从源头降低 Nginx 的安全风险覆盖了 Web 服务最常见的安全问题动态黑名单是高级防护的核心基于 geo 模块实现 IP 的动态封禁结合 Shell 脚本和 crontab 实现黑名单的自动更新无需重启 Nginx 即可实时拦截恶意 IP适合高并发的生产环境HTTPS 部署是解决 HTTP 明文传输安全问题的根本方案通过混合加密方式保证数据传输的安全性同时满足搜索引擎、小程序 / APP 开发的要求配置时需注意启用高版本 TLS 协议和强加密套件实现全站 HTTPS 加密。Nginx 的安全防护是一个持续优化的过程除了本文讲解的配置外还可结合 WAFWeb 应用防火墙、ModSecurity 等工具实现更细粒度的攻击防护。在生产环境中需根据业务场景调整安全配置参数同时定期更新 Nginx 版本、监控访问日志及时发现并拦截恶意请求保障 Web 服务的安全性和可靠性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2418708.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…