当前位置: 首页 > article >正文

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

在互联网技术高速发展的当下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 服务的安全性和可靠性

相关文章:

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

在互联网技术高速发展的当下,Web 服务的安全性和可靠性成为企业与开发者的核心关注重点。Nginx 作为高性能 Web 服务器和反向代理工具,凭借轻量级、高并发处理能力和灵活模块化设计,占据全球近三分之一的 Web 服务器市场份额。但随着 DDoS、S…...

10分钟搞定SCI插图的秘密武器

对于每一位奋斗在一线的科研人员来说,做实验、跑数据或许是家常便饭,但每当论文撰写进入尾声,明明有着惊艳的实验数据和扎实的创新观点,却因为一张“惨不忍睹”的配图,让整篇论文的档次大打折扣。这恐怕是许多科研人心…...

AI智能应用开发(Java)起点-终点 -1、java的前世今生andJava环境配置、jdk下载,以及Idea下载和基本应用

一、JAVA的诞生与成长 起源:Green Team与Java的诞生 Java的起源可以追溯到1990年代,当时Sun Microsystems成立了一个名为Green Team的特别小组,旨在开发一种新型软件以驱动消费电子设备。这个项目的核心成员包括后来被称为“Java之父”的Ja…...

从后台管理到 IoT 远程控表,这个 Spring Boot 3 开源项目把能耗管理链路做完整了

最近看了不少 Java 开源项目,有一个很明显的感受:很多项目页面做得不少,接口也挺全,但真往下看,要么偏后台 CRUD,要么只覆盖某个局 部能力,很难看到一条完整业务链路。 ems4j 给我的感觉不太一样…...

RWKV-7 G1e 系列模型开源,性能表现亮眼

2026 年 3 月,RWKV-7 G1e 系列推理模型开源发布,涵盖 13.3B/7.2B/2.9B/1.5B 等不同规格。该模型在评测和实战中表现出色,且具备高并发推理能力。模型发布情况2026 年 3 月,RWKV-7 G1e 系列推理模型正式开源,目前已发布…...

大晓机器人开源Kairos 3.0-4B:具身世界模型性能全面领跑

【导语:近日,大晓机器人重磅开源开悟世界模型3.0(Kairos 3.0)-4B系列具身原生世界模型,它是业内首个实现“多模态理解 -- 生成 -- 预测”一体化的开源具身原生世界模型,性能领先国内外主流具身世界模型。】…...

Java环境搭建 day1

jdk:21idea:2024.1一:1.配置环境变量:搜索2.高级--》环境变量--》系统变量3.新建 配置4.双击Path 编辑文本前面添加:%JAVA_HOME%\jre\bin;D:\Java\JDK\jdk21\bin;二:cmd--> java -versioncmd-->javac三:java为什么能跨平台答&#xff1…...

gcc/g++编译简单 C/C++ 项目的实用指南

编译 C/C 项目其实可以非常直观。无论你是刚接触编程的学生,还是想脱离 IDE(如 VS Code 插件或 Visual Studio)手动控制构建过程的开发者,掌握 gcc (针对 C) 和 g (针对 C) 的基本命令都是一项必备技能。 1. 基础编译:…...

WiFi的应用

1.WIFI获取当前时间移植WIFI文件当前使用的ESP32S3就是WIFI模块,可以直接用于联网。将WIFI的代码移植到当前工程中。创建一个WIFI文件夹,将wifi.c和wifi.h放入其中。加载WIFI文件添加头文件访问路径WIFI,源文件已经通过通用符说明了&#xff…...

欧意下载地址okxz.run复制进去-2026年最新版V5.6.12.5.31安卓/苹果版

欧意下载地址okxz.run复制进去-2026年最新版V5.6.12.5.31安卓/苹果版1975年9月18日下午15 - 17点出生的人,其性格、运势与命运交织出独特的人生轨迹。性格上,他们往往兼具热情与沉稳,对生活充满积极向上的态度,同时又有着细腻的情…...

7-Zip 21.04(x64)安装教程 Windows版:管理员运行+自定义安装路径指南

7z是一款简洁的解压软件,比传统解压缩软件更快更轻巧,支持解压主流的rar、zip、7z、iso等多达37种压缩文件 一、准备工作​ 安装包下载: https://pan.quark.cn/s/a246d6f3163c ,先下载好 7-Zip 21.04 (x64) 安装包(文…...

创维电视刷机通用教程

刷机可解决电视卡顿、系统崩溃、无法开机等问题,甚至能解锁更多功能。但刷机有风险,操作前请务必仔细阅读本教程,确保每一步都正确无误。一、刷机前准备确认机型与机芯查看标签:电视背面或电池仓内的条形码标签,记录“…...

由二叉树的前序结果来生成二叉树

1.思想:递归(分治)arr:存放前序结果。pi:用来遍历arr数组的下标的指针。2.递归与回溯图...

多项目并行计时与灵活计费:拼豆店计时计费、电玩店计时计费、PS5计时计费多项目同时并行计算时间的技术实现路径

在复合式休闲娱乐业态中,单一店铺同时经营多种计时项目的现象越来越普遍。一家店铺可能既提供拼豆DIY手工体验,又设有PS5游戏区、桌球室或棋牌包间。不同项目的单价规则各不相同,同一项目在不同时段、不同客群中又存在多种计费方式&#xff0…...

weixin233微信小程序研学自习室选座与门禁系统的实现与开发springboot(文档+源码)_kaic

第5章 系统实现编程人员在搭建的开发环境中,会让各种编程技术一起呈现出最终效果。本节就展示关键部分的页面效果。5.1 座位信息图5.1 即为编码实现的座位信息界面,用户在座位信息界面中先了解座位价格,座位简介信息,然后对可以预…...

C++编译期字符串加密

1、非修改序列算法这些算法不会改变它们所操作的容器中的元素。1.1 find 和 find_iffind(begin, end, value):查找第一个等于 value 的元素,返回迭代器(未找到返回 end)。find_if(begin, end, predicate):查找第一个满…...

C语言100篇:从入门到天花板 第19篇 静态变量static:修饰变量与函数的核心作用

【独家】C语言100篇:从入门到天花板 第19篇 静态变量static:修饰变量与函数的核心作用 作者:华夏之光永存 前言 大家好,我是华夏之光永存,欢迎继续阅读 CSDN独家高质量专栏《C语言100篇:从入门到天花板》。 在C语言所有关键字里,static 是最具工程价值、最容易被新手…...

数据结构和算法之【递归】

目录 认识递归 递归的定义 利用递归实现几个小案例 链表的遍历 反转字符串 求N的阶乘 思路总结 多路递归 single recursion和multi recursion 斐波那契数列 递推公式 编码实现 代码优化 LeetCode-70题 题解 测试 认识递归 递归的定义 计算机科学中&#xff0…...

高考数学97分,我的“数学直觉“比140分更好用:指针:内存的门牌号系统

目录 一.序言 二.数学直觉 三.核心概念 1.基础核心概念 1. 1.指针的本质 1.2. 指针的两大核心操作 1.3. 指针的类型 2.进阶核心概念 2.1. 指针与数组的关系 2.2. 指针的运算 2. 3. 多级指针 3.应用核心概念 3.1. 指针作为函数参数 3.2. 动态内存分配 3.3. 函数指针 4.安…...

JAVA学习day01记录day01

为了未来能跟上AI的时代,只能老骥伏枥,重返学海。 那就从java基础班开始吧。今天学习涵了Java开发的基础搭建与入门实践。 很荣幸能成为黑马程序员的广州何波校长的学生,也很幸运能在他亲自上课的班级学习,何校长幽默,…...

全屋智能不被 “网” 住[特殊字符] Home Assistant+cpolar 解锁远程控家新体验

Home Assistant 是一款专注本地控制的智能家居管理平台,能整合米家、vivo、飞利浦等多品牌设备,通过可视化界面设置 “开门开灯”“离家关插座” 等自动化场景,无需编写代码,就能让不同品牌的智能设备实现联动,摆脱多个…...

修仙游戏:C++实现修真世界

以下是一个整合了修仙元素的C小游戏框架&#xff0c;包含功法系统、丹药炼制、境界突破和地图系统。代码超过300行&#xff0c;可直接编译运行&#xff1a;#include <iostream> #include <vector> #include <map> #include <string> #include <cstd…...

大数据实时计算:Flink+AI 融合实战

一、为什么需要 FlinkAI 融合&#xff1f; 在大数据实时计算场景中&#xff0c;传统的Flink作业往往只负责数据清洗、聚合、流转等标准化处理&#xff0c;但业务需求早已不满足于"计算出结果"&#xff0c;而是需要"从结果中产生智能决策"&#xff1a; 电…...

GeoDa 空间回归分析

GeoDa 空间回归分析 前置知识&#xff1a;[[GeoDa空间自相关分析]] 难度等级&#xff1a;⭐⭐⭐⭐⭐ 更新日期&#xff1a;2026-03-16 &#x1f4cb; 目录 1. 空间回归基础2. 空间滞后模型&#xff08;SLM&#xff09;3. 空间误差模型&#xff08;SEM&#xff09;4. 空间杜宾模…...

初探 MindSpore(一):PyTorch 用户先从哪里开始

初探 MindSpore&#xff08;一&#xff09;&#xff1a;先建立最基本的框架认识 对 PyTorch 用户来说&#xff0c;MindSpore 不是一套需要从头理解的框架&#xff0c;但也绝不是“把 API 名字改掉就能迁过去”的另一层皮。MindSpore 官方文档本身就是按这个思路组织的&#xff…...

OpenClaw 安全公告激增暴露 GitHub 与 CVE 漏洞跟踪体系间的鸿沟

自托管AI Agent项目OpenClaw在发布数周后便成为GitHub星标最多的代码库,吸引了大量开发者社区和研究人员关注。但没人预料到,其快速增长很快成为全球漏洞跟踪体系的意外压力测试。 安全公告爆发式增长 2月下旬,该项目开始以开源项目罕见的速度发布安全公告,迅速暴露出两大…...

申论素材资源合集

26行政执法专项资料 文件大小: 31.8GB内容特色: 31.8GB行政执法专项资料&#xff0c;覆盖法规、案例与高频考点适用人群: 备考公务员行政执法岗、法检书记员、执法勤务辅警核心价值: 一站式掌握执法依据、程序与高频考题&#xff0c;快速提升应试能力下载链接: https://pan.qu…...

openclaw运维

这里写目录标题常用命令配置管理更新管理斜杠命令常用命令 #### Gateway 管理 # 启动 Gateway openclaw gateway# 启动并显示详细日志 openclaw gateway --verbose# 指定端口启动 openclaw gateway --port 18789配置管理 # 运行配置向导 openclaw onboard# 系统健康检查 open…...

[连载] C++ 零基础入门-5.C++ if else 条件判断(小白必看)

【C 零基础入门】第5篇&#xff1a;if else 条件判断&#xff08;小白必看&#xff09; 作者&#xff1a;咏方舟-长江支流 | 日期&#xff1a;2026-03-16 ✅ 标准C跨平台说明 本系列免费&#xff0c;敬请关注&#xff01;所有代码均采用标准C&#xff0c;不依赖任何平台…...

Gemini 3 flash架构深度拆解:从稀疏MoE到原生多模态的工程实现

Gemini 3 Pro是谷歌于2025年11月发布的旗舰级大语言模型&#xff0c;其技术内核远非“参数更大”所能概括——稀疏专家混合&#xff08;MoE&#xff09;架构、原生多模态统一语义空间、可配置思考深度与思维签名机制&#xff0c;共同构成了其性能跃迁的底层逻辑。国内技术爱好者…...