我正在通过proxypass服务/ foo / bar /并希望继续这样做。但是,我想从/var/www/mystatic/baz.swf等静态发送/foo/bar/baz.swf。等等。
我希望我可以做类似
的事情 location /foo/bar/(.*) {
alias /var/www/mystatic/;
}
location / {
proxy_pass ....;
...
}
并且/ foo / bar /将转到应用程序服务器,而/foo/bar/(.*)将静态提供。
文档说我不能这样做,需要使用root和rewrite的组合:http://wiki.nginx.org/NginxHttpCoreModule
除了复杂功能之外,我还想继续使用古老的,不受支持的0.5.33。任何帮助都会非常感激。
编辑:继续前进,有人建议使用root而不是别名。但是,我的版本似乎不能在location指令上使用任何正则表达式?这里,/ foo / bar / baz.swf由proxy_pass提供服务!我的文件位于/var/www/foo/bar/baz.swf。
location /foo/bar/(.+) {
root /var/www/;
}
答案 0 :(得分:2)
你可以这样做;但它有点深奥。尝试使用:
location ^~ /foo/bar {
alias /var/www/mystatic/;
}
location / {
proxy_pass ....;
}
这些选项记录在Wiki http://wiki.nginx.org/NginxHttpCoreModule#location
上答案 1 :(得分:1)
location = /foo/bar/baz.swf {}
将清除任何设置为/foo/bar/baz.swf的选项。所以你可以离开它 因为代理选项不会被使用。
答案 2 :(得分:1)
你可以:
# mkdir /var/www/foo
# mv /var/www/mystatic /var/www/foo/bar
然后使用此配置:
location ~ ^/foo/bar/(.+) {
root /var/www/;
}