2009-11-29 66 views
4

我正在服务/富/酒吧/通过proxypass的方式,并希望继续这样做。但是,我想从/var/www/mystatic/baz.swf等静态地提供/foo/bar/baz.swf。Nginx的位置,别名,重写,根

我希望我可以做类似

location /foo/bar/(.*) { 
     alias /var/www/mystatic/; 
    } 

    location/{ 
     proxy_pass ....; 
     ... 
    } 

和/富/酒吧/会到应用服务器,同时/foo/bar/(.*)将被静态地提供。

文档说,我不能做到这一点,需要使用根的组合和重写:http://wiki.nginx.org/NginxHttpCoreModule

添加到复杂,我想继续使用古老的,不支持0.5.33。任何帮助将不胜感激。

编辑:前进,有人建议使用根而不是别名。但是,似乎我可以在我的版本的位置指令上使用任何正则表达式?在这里,/foo/bar/baz.swf由proxy_pass提供!我有/var/www/foo/bar/baz.swf文件。

location /foo/bar/(.+) { 
     root /var/www/; 
    } 
+0

笑,最糟糕的问题上SO徽章。 – 2011-01-21 00:33:01

+0

你为什么不把'location/foo/bar /(.+)'放进去呢? – avetisk 2012-11-02 12:44:47

回答

2

你可以这样做;但它有点深奥。尝试使用:

location ^~ /foo/bar { 
    alias /var/www/mystatic/; 
} 

location/{ 
    proxy_pass ....; 
} 

这些选项都记录在维基http://wiki.nginx.org/NginxHttpCoreModule#location

+0

如果我这样做/富/酒吧/由nginx服务..如果我添加尾部斜杠...我仍然不正确排队/foo/bar/baz.js – 2009-12-01 07:05:57

+0

工作得很好,谢谢! – clops 2012-03-29 12:57:17

1
location = /foo/bar/baz.swf {} 

会清除清除设置为/foo/bar/baz.swf任何选项。因此,您可以将它保留在 的位置,因为不会使用代理选项。

1

您可以:

# mkdir /var/www/foo 
# mv /var/www/mystatic /var/www/foo/bar 

然后使用这个配置:

location ~ ^/foo/bar/(.+) { 
    root /var/www/; 
}