我有一个看起来像这样的 nginx.conf:
server {
...
root /var/opt/data/web;
...
location ~* \.(?:eot|woff|woff2|ttf|js)$ {
expires 1M;
}
...
location /one {
root /var/opt/data/alternatives;
try_files $uri $uri/ =404;
}
location /two {
root /var/opt/data/alternatives;
try_files $uri $uri/ =404;
}
}
当我curl http://localhost/one/得到index.html存储在/other. 但是当我 curl.../localhost/one/foo.js找不到文件时,我在 error.log 中得到了这个:
open() "/default/foo.js" 失败(2:没有这样的文件或目录)
我尝试了其他变体,例如location ~ (one|two),location /one/甚至location ~ /(one|two),但它们都不起作用。
完整的配置包含更多location的 s,但我猜我的问题的原因是我设置.js资源的位置,expire -1因为这会阻止将根更改为我需要的。
如果这很重要:我使用 nginx 1.15.2。如果您想知道为什么我有这个奇怪alternatives的目录:该web目录是由 CMS 软件在alternativesedgit pull时创建的。