我从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; }
当然,这是无效的语法。 我怎样才能做这个工作? 基本上,我希望sites/default/files文件直接提供文件,如果它存在和使用@proxy否则。 其他目录应该立即去@proxy 。 我不想复制粘贴@proxyconfiguration,因为会有更多的添加(caching)。 我也将有其他的目录,例如直接提供.well-known 。
有几种方法可以解决这个问题:
你可以把你的代理configuration分开文件并include它。
proxy_conf :
proxy_pass proxy_pass http://127.0.0.1:8088; proxy_set_header Host $host; # etc.....
和你的configuration:
location /sites/default/files/ { try_files $uri @proxy; } location / { include proxy_conf; } location @proxy { include proxy_conf; }
使用error_page指令:
location / { error_page 418 = @proxy; return 418; }
使用假的不存在的path作为try_files的第一个参数:
location / { try_files /NONEXISTENTFILE @proxy; }