我有一个 NginX vhost,其中所有静态内容均由 nginx 提供,而任何未找到的内容或以 php 代理结尾的内容则由 apache 提供。
只是想检查我的位置是否正确:
location / {
try_files $uri $uri/ @proxy;
expires 30d;
}
location ~* \.php$ {
proxy_pass http://127.0.0.1:8080;
}
location @proxy {
proxy_pass http://127.0.0.1:8080;
}
我还想知道是否有办法让第二个位置转到第三个位置,这样我就不必重复两次 proxy_pass 行?
我还有其他几个问题:
nginx 是否从上到下读取位置,如果当前请求与其中一个位置匹配,它是否会停止查看下一个位置?例如,如果请求 server.com/image.jpg,是否意味着第一个位置声明将在我的位置中捕获它,其余位置将被忽略?
如果我确实最大程度地过期;或 30 天后过期;但随后网站更新,并且我想强制用户浏览器立即重新加载文件,我可以做些什么让它们重新加载?
我的第一个位置声明将匹配以 .js、.css、.png 等结尾的任何路径,但它区分大小写吗?它也会匹配 .PNG 吗?我是否应该将其设置为区分大小写?如果是,怎么做?
您认为还有什么可以改善此配置吗?
答案1
location / {
try_files $uri $uri/ @proxy;
expires 30d;
}
location ~* \.php$ {
root @proxy;
}
location @proxy {
proxy_pass http://127.0.0.1:8080;
}
应该这么做