我有一个类似这样的 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的人核对了一下,这个位置和我们之前的框架有关系...
感谢您的支持...