Nginx技术问题:如何在URL中保留双斜杠?
Nginx 1.2.8 双斜杠自动合并问题排查与解决
核心配置校验
- 确认
merge_slashes off;的配置位置:必须放在server或location块内,全局http块的设置在部分1.2.x版本中可能不生效 - 排查其他干扰模块:
- 检查是否存在
rewrite规则,部分正则替换会隐性规范化路径 - 若使用
proxy_pass,避免采用带尾部斜杠的写法(如proxy_pass http://backend/;),这种写法会强制触发路径合并,改用proxy_pass http://backend;即可
- 检查是否存在
- 验证配置生效:执行
nginx -t检查语法合法性,再通过nginx -s reload重载服务
强制保留原始URI方案
如果上述配置仍无法解决问题,可以直接传递原始请求路径跳过Nginx的路径规范化:
server { listen 443 ssl; server_name www.url.com; merge_slashes off; location / { # 直接使用$request_uri传递未修改的原始请求路径 proxy_pass http://your_backend$request_uri; } }
注意:
$request_uri包含完整的原始请求路径(含查询参数),需确保后端服务能正常处理带双斜杠的路径格式
版本特性提示
Nginx 1.2.x分支的merge_slashes实现存在细节差异,若问题持续:
- 检查是否启用了其他路径优化类模块
- 临时回滚至升级前版本对比,确认是否为版本本身的特性变更
内容的提问来源于stack exchange,提问作者user3775412
相关产品推荐
相关产品推荐

