我从https://gist.github.com/mattd/1006398开始,现在我有了:
root /data/example.com;
location /sites/default/files/ {
try_files $uri @proxy;
}
location / {
try_files @proxy;
}
location @proxy {
proxy_pass http://127.0.0.1:8088;
}
Run Code Online (Sandbox Code Playgroud)
当然,这不是有效的语法。我怎样才能使这项工作?基本上,sites/default/files如果文件存在,我想直接提供文件,@proxy否则使用。其他目录应@proxy立即转到。我不想复制粘贴@proxy配置,因为那里会添加更多配置(缓存)。例如,我还将有其他应直接提供的目录.well-known。
有几种方法可以解决这个问题:
您可以将代理配置放在单独的文件中include。
proxy_conf:
proxy_pass proxy_pass http://127.0.0.1:8088;
proxy_set_header Host $host;
# etc.....
Run Code Online (Sandbox Code Playgroud)
和你的配置:
location /sites/default/files/ {
try_files $uri @proxy;
}
location / {
include proxy_conf;
}
location @proxy {
include proxy_conf;
}
Run Code Online (Sandbox Code Playgroud)
使用error_page指令:
location / {
error_page 418 = @proxy;
return 418;
}
Run Code Online (Sandbox Code Playgroud)
使用假的不存在的路径作为第一个参数try_files:
location / {
try_files /NONEXISTENTFILE @proxy;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4324 次 |
| 最近记录: |