Расположение Nginx, псевдоним, перезапись, корень

Я обслуживаю / foo / bar / через proxypass и хочу продолжать это делать. Однако я хотел бы обслуживать /foo/bar/baz.swf статически, скажем, /var/www/mystatic/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/;
    }

person Skylar Saveland    schedule 29.11.2009    source источник
comment
лол, худший вопрос по значку ТАК.   -  person Skylar Saveland    schedule 21.01.2011
comment
Почему бы тебе просто не поставить location /foo/bar/(.+)?   -  person avetisk    schedule 02.11.2012


Ответы (3)


Ты можешь сделать это; но это немного эзотерично. Попробуйте использовать:

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

location / {
    proxy_pass ....;
}

Эти параметры задокументированы в Wiki http://wiki.nginx.org/NginxHttpCoreModule#location

person Matt Saunders    schedule 01.12.2009
comment
Если я это сделаю, / foo / bar / обслуживается nginx ... если я добавлю косую черту в конце ... Я все еще неправильно выстраиваю /foo/bar/baz.js - person Skylar Saveland; 01.12.2009

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

очистит все параметры, установленные на /foo/bar/baz.swf. Таким образом, вы можете оставить его на месте, поскольку параметры прокси не будут использоваться.

person Martin Redmond    schedule 03.12.2009

Вы можете:

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

затем используйте эту конфигурацию:

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