Re: Проблема с директивами include и set
Maxim Dounin
mdounin на mdounin.ru
Чт Июн 14 11:40:32 UTC 2012
Hello!
On Thu, Jun 14, 2012 at 04:23:00PM +0600, Andrey Semenoff wrote:
> Доброго дня!
>
> Привожу примеры конфигураций:
>
> # cat rss.name.ru.conf
> > server {
> > listen ip:port;
> > server_name name.ru www.name.ru;
> > set $docroot "/www/www/name.ru";
> > set $pool "127.0.0.1:8080";
> > charset windows-1251;
> > proxy_read_timeout 600;
> > proxy_send_timeout 600;
> > proxy_connect_timeout 600;
> > access_log /var/log/nginx/name.ru-access.log;
> > error_log /var/log/nginx/name.ru-error.log warn;
> > access_log on;
> > rewrite ^/yandex/rss.xml$ /rss/yandex/ last;
> > rewrite ^/rss/rss.xml$ /rss/all/ last;
> > rewrite ^(.*)$ /404.php break;
> > location / {
> > include backend-httpd;
> > }
> > }
>
>
> # cat backend-httpd
> >
> proxy_pass http://127.0.0.1:8080;
> > proxy_set_header Host $host;
> > proxy_set_header X-Real-IP $remote_addr;
> > proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
>
>
>
>
> Если вместо "127.0.0.1:8080" подключаемого опцией include конфига добавить
> переменную "$pool", то не срабатывают правила rewrite.
> Подскажите, может я что-то упустил. Без rewrite я всегда использовал
> переменную в подключаемых файлах и всегда работало.
> Остальные параметры, в том числе и основного конфига "nginx.conf" --
> по-умолчанию
> Может подскажете другой вариант для рерайта? Мне нужна эта переменная )
>
> # nginx -v
> > nginx version: nginx/1.0.15
Они сработают, просто на бекенд в любом случае уйдёт исходный uri,
полученный от клиента. Чтобы ушёл изменённый, нужно обновиться на
1.1.12+:
*) Bugfix: a "proxy_pass" directive without URI part always used
original request URI if variables were used.
Ну а вообще - не надо использовать proxy_pass с переменными без
нужды. Это совершенно отдельный режим работы, и там могут быть
различные нюансы.
Maxim Dounin
Подробная информация о списке рассылки nginx-ru