带有正则表达式位置和别名以及 xls 扩展的 nginx 网络服务器

带有正则表达式位置和别名以及 xls 扩展的 nginx 网络服务器

我有一个类似这样的 nginx 配置,

server {
    server_name my.domain.com;
    listen 80;
    root /path/to/http/root;
    include /path/to/proxy.common.conf;

    location ~ ^/foo-(.+)$ {
        alias /path/to/static/file/$1;
    }
    location / {
        try_files $uri $uri/ =404;
        proxy_pass http://127.0.0.1:8000/;
    }
}

我无法访问位置为 /foo-something.xls 的文件,它总是返回 404 未找到...

我也尝试了 .xlsx、.doc 和 .docx,但也显示未找到...

如果我访问.js、.css、.png、.xls1、.doc1 等文件,它会正常运行...

错误日志显示正则表达式的位置不匹配,并尝试查看根位置......

我还测试了位置

location = /foo-test1.xls
location ^~ /foo-test2.xls

并将其别名添加到文件,然后返回文件内容......

我的配置是否缺少了什么?

我在公司框架上开发报告生成器模块时发现了这个问题......

我也尝试阅读 nginx 源和 pcre 源,但找不到与这些扩展相关的任何字符串......

答案1

我发现了导致路径混淆的原因......

我错过了检查 proxy.common.conf...

重新检查后,我发现有一个位置可以使用正则表达式检查带有这些扩展名的文件......

这就是为什么正则表达式在找到匹配的位置后停止搜索的原因......

和之前配置过nginx的人核对了一下,这个位置和我们之前的框架有关系...

感谢您的支持...

相关内容