Welcome! Log In Create A New Profile

Advanced

Re: Если в пути "root" указана переменная, не находит index

Maxim Dounin
February 11, 2011 07:40PM
Hello!

On Fri, Feb 11, 2011 at 06:10:26PM -0500, nix wrote:

> Подскажите, а из-за чего nginx 0.8.54 при
> следующей конфигурации может
> вставлять пустую переменную $branch в root
> (root находится вне location) в то время, как в
> location со статикой $branch в root передается
> как "dev"? Пробую заходить по ссылке
> http://dev.test.dev.domain.ru/
>
> server {
> listen 80;
> server_name ~^(.*)\.test\.dev\.domain\.ru$ test.dev.domain.ru;
> set $branch $1;
>
> charset utf-8;
> root /srv/www/test/repo/$branch/htdocs;
> index index.php;
>
> location ~*
> \.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|flv|avi|djvu|mp3|mp4|ogv)$
> {
> root /srv/www/test/repo/$branch/htdocs;
> }
> }

Вопрос: как работает директива index?

Ответ: модуль index проверяет существование файлов с заданными
именами, и если находит, то делает внутренний редирект на нужный
индексный файл.

Вопрос: как работает директива set?

Ответ: директива set выполняется в фазе rewrite (server rewrite
для директив заданных на уровне server) и устанавливает
заданную переменную в заданное значение.

Вопрос: что представляет собой переменная $1?

Ответ: переменная $1 содержит выделение из последнего выполненного
регулярного выражения.

Вопрос: какое значение будет иметь переменная $branch в
приведённом выше конфиге после внутреннего редиректа на индексный
файл?

Ответ: после внутреннего редиректа server rewrites будут выполнены
повторно, и переменная $branch будет установлена в $1. При этом
последним регулярным выражением будет (неуспешное) тестирование "location ~*
...", т.е. значение $1 будет неопределено.

Вопрос: как быть?

Ответ: никогда не использовать нумерованные выделения в
server_name. Если нужны выделения - использовать *именованные*
выделения.

http://nginx.org/en/docs/http/server_names.html#regex_names

Maxim Dounin

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Если в пути "root" указана переменная, не находит index

nix February 11, 2011 06:10PM

Re: Если в пути "root" указана переменная, не находит index

Maxim Dounin February 11, 2011 07:40PM

Re: Если в пути "root" указана переменная, не находит index

nix February 12, 2011 03:53AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 162
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready