You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu22下Nginx 1.23.0含空格路径缩略图生成失败问题

解决Nginx 1.23.0中含空格图片路径生成缩略图返回400的问题

问题核心

从Ubuntu 16(Nginx 1.16)升级到Ubuntu 22后,若将Nginx升级至1.23.0,含空格的图片路径请求会返回400 Bad Request,仅在localhost日志有记录,主站日志无条目;无空格路径正常。Ubuntu 22默认的Nginx 1.18.0可正常处理该场景,降级到1.18.0能解决问题,但该版本已停止安全支持。

排查与解决方向

  • 检查Nginx URI处理配置变化
    Nginx 1.23.x版本可能调整了URI解析的默认规则,重点检查以下配置:

    • merge_slashes:确保该指令设置为on(默认值),若配置中有自定义URI处理逻辑,需确认是否影响空格解析。
    • 排查disable_symlinks等路径限制类指令,确认是否对含空格的路径产生额外拦截。
  • 修复配置中的路径编码处理
    如果缩略图生成依赖proxy_pass或fastcgi_pass,需确保请求中的空格已被正确编码为%20,且Nginx在传递上游请求时保留编码状态。示例配置:

    location /thumbnail/ {
        set $original_uri $uri;
        # 保留原始编码路径,避免空格被解码后破坏上游请求
        proxy_pass http://thumbnail-backend$original_uri;
        # 针对fastcgi场景可替换为:
        # fastcgi_param REQUEST_URI $original_uri;
    }
    
  • 验证1.22.x版本兼容性
    若暂无法直接安装1.22.0,可通过Docker快速测试该稳定分支(仍有安全更新):

    # 挂载本地Nginx配置,启动1.22.0容器测试
    docker run -d -p 8080:80 -v /your/local/nginx.conf:/etc/nginx/nginx.conf nginx:1.22.0
    

    测试含空格的图片路径请求,确认是否为1.23.x独有的版本问题。

  • 开启详细日志定位问题
    在主站server块中添加详细日志格式,对比空格路径请求的解析差异:

    log_format detailed '$remote_addr [$time_local] "$request" '
                        '$status "$request_uri" "$uri"';
    access_log /var/log/nginx/main-detailed.log detailed;
    

    查看日志中$request_uri(原始请求URI)和$uri(Nginx解析后URI)的差异,确认是否存在空格被异常截断或解码的情况。

内容的提问来源于stack exchange,提问作者John Mellor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 05:45:33