nginx 对包含特殊字符的文件返回 404

nginx 对包含特殊字符的文件返回 404

我刚刚切换到 nginx 作为静态文件服务器,它适用于绝大多数文件,但对于某些带有特殊字符的文件,它会抛出 404。

这是Kevin Worthington 的 64 位 nginx 版本在 Windows Server 2008 R2 上运行。

我的 nginx.conf 条目如下所示...

server {
    server_name  example.com;

    listen       80;

位置 /static/ { root /cygdrive/g/Files; 有效期 30 天; }

    location / {
        proxy_pass   http://127.0.0.1:8080;
    }
}

错误日志中的条目如下...

recvmsg() 返回无效的辅助数据级别 19 或类型 8 2011/08/19 19:04:22 [错误] 3756#0: *1 open()“/cygdrive/g/Files/static/Pilón.jpg”失败(2:没有此文件或目录),客户端:12.168.24.203,服务器:example.com,请求:“GET /static/Pil%F3n.jpg HTTP/1.1”,主机:“example.com”

如果我获取错误中引用的路径,将斜杠替换为反斜杠,并在其中添加冒号,那么 Windows 将从运行菜单中打开该文件。同一文件夹中但不包含特殊字符的其他文件也可以正常工作。

答案1

似乎 Windows 版本的 nginx 中存在 unicode 字符的错误。一些解决方法nginx maillist中提出了,尝试一下。

相关内容