|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
维护日志
关联工单:[2026-05-01] [功能] [邮件系统] - Discuz! 用户删除邮件队列系统部署完成
1、问题缘起及排查过程
邮件队列系统部署后,在测试过程中发现工具目录(/tools/pdf_width_unifier)访问异常,具体表现为:
- 现象:浏览器访问 http://www.dianbo.org/tools/pdf_width_unifier,跳转至 https://www.dianbo.org:8443/tools/pdf_width_unifier/
- 结果:ERR_CONNECTION_REFUSED
- 影响范围:仅无斜杠结尾的目录访问受影响(/tools/pdf_width_unifier → 失败,/tools/pdf_width_unifier/ → 正常)
排查过程提出的问题:
- 为什么 Nginx 重定向会暴露内部端口 8443?
- 是否应该在 Nginx 层修复,还是由前置的雷池WAF处理?
- 带斜杠与不带斜杠的目录访问行为为何不一致?
- 301 重定向被浏览器缓存后如何清除?
根因定位:Nginx index 模块对无斜杠目录自动补全 301 重定向时,使用 $server_port 变量(值为 8443)构造绝对 URL,导致内部回源端口暴露给客户端。同时,雷池WAF层未开启HTTP自动跳转HTTPS功能,导致 http:// 请求未在边缘层被处理。
2、解决方案
(1)简要技术分析:
在雷池WAF边缘层统一处理HTTP→HTTPS跳转,并在Nginx层禁用 port_in_redirect,使目录补全重定向使用相对路径,避免内部端口泄漏。
(2)修改配置:
| 操作层级 | 配置项 | 修改内容 | | 雷池WAF | HTTP自动跳转HTTPS | 开启 | | 雷池WAF | 传递X-Forwarded-Host、X-Forwarded-Proto | 开启 | | Nginx | www.dianbo.org.conf | 添加 port_in_redirect off; 等指令 |
(3)关键配置代码段:
Nginx配置文件:/www/server/panel/vhost/nginx/www.dianbo.org.conf
- server {
- listen 127.0.0.1:8443;
- server_name www.dianbo.org;
-
- # 防止重定向暴露内部端口
- port_in_redirect off;
- server_name_in_redirect off;
- absolute_redirect off;
-
- # ... 其余配置保持不变 ...
- }
复制代码
验证命令:
- curl -I "https://www.dianbo.org/tools/pdf_width_unifier"
- # Location: https://www.dianbo.org/tools/pdf_width_unifier/ ✅ 无 :8443
复制代码
3、最终实现效果
| 测试场景 | 修复前 | 修复后 | | 无斜杠目录访问 | 跳转至 :8443 端口 → ERR_CONNECTION_REFUSED | 跳转至 https:// 标准端口 → 正常访问 | | 带斜杠目录访问 | 正常 | 正常(无变化) | | HTTP→HTTPS跳转 | Nginx未监听80端口,连接拒绝 | 雷池边缘层自动跳转 | | 搜索引擎抓取 | 无法抓取,收录下降 | 恢复正常抓取 |
4、重要技术沉淀
- 反向代理场景下 port_in_redirect off 是刚需:Nginx 监听非标准端口时,目录补全 301 必须使用相对路径,否则内部端口泄漏。
- 301 缓存比 302 更顽固:浏览器对 301 永久重定向会无限期缓存,修复后需主动清除浏览器缓存验证。
- 边缘层处理重定向优于后端:在雷池WAF层开启HTTP→HTTPS跳转,比在后端Nginx处理更高效、更合理。
5、进一步优化构想
- 监控重定向响应:定期执行 curl -I 检查关键目录的301响应头,确保不携带异常端口。
- 用户侧缓存清理提示:考虑在网站公告或错误页面中增加“如遇跳转异常,请清除浏览器缓存”的提示文案。
|
|