Nginx位置,别名,重写,root

时间:2009-11-29 20:21:48

标签: deployment static nginx rewrite location

我正在通过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/;
    }

3 个答案:

答案 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/;
}