Nginx 位置、别名、重写、root
Posted
技术标签:
【中文标题】Nginx 位置、别名、重写、root【英文标题】:Nginx location, alias, rewrite, root 【发布时间】:2010-12-21 11:02:03 【问题描述】:我正在通过 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/;
【问题讨论】:
大声笑,关于 SO 徽章的最糟糕的问题。 为什么不直接输入location /foo/bar/(.+)
?
【参考方案1】:
你可以这样做;但它有点深奥。尝试使用:
location ^~ /foo/bar
alias /var/www/mystatic/;
location /
proxy_pass ....;
这些选项记录在 Wiki http://wiki.nginx.org/NginxHttpCoreModule#location
【讨论】:
如果我这样做 /foo/bar/ 由 nginx 提供服务 .. 如果我添加尾部斜杠 ... 我仍然没有正确排列 /foo/bar/baz.js跨度> 【参考方案2】:location = /foo/bar/baz.swf
将清除所有设置为 /foo/bar/baz.swf 的选项。所以你可以离开它 不会使用代理选项。
【讨论】:
【参考方案3】:你可以:
# mkdir /var/www/foo
# mv /var/www/mystatic /var/www/foo/bar
然后使用这个配置:
location ~ ^/foo/bar/(.+)
root /var/www/;
【讨论】:
以上是关于Nginx 位置、别名、重写、root的主要内容,如果未能解决你的问题,请参考以下文章