Re: Помогите допилить блок до универсальной пересылки на бэкэнд
Валентин Бартенев
ne на vbart.ru
Вт Май 29 15:01:01 UTC 2012
On Tuesday 29 May 2012 18:34:34 Andrey Repin wrote:
> Здравствуйте, Уважаемый(-ая, -ое) Валентин Бартенев!
>
> ВБ> On Thursday 24 May 2012 20:57:14 Andrey Repin wrote:
> ВБ> [...]
>
> >> Опустим нарушения RFC (i.e. "proxy_redirect http://example.com:8080/
> >> /;"),
>
> ВБ> Чем это нарушает RFC?
>
> Заголовок Location ДОЛЖЕН содержать полный адрес ресурса, включая протокол
> доступа.
>
> http://tools.ietf.org/html/rfc2616#section-14.30
Он и будет содержать. Читаем внимательно: http://nginx.org/r/proxy_redirect/ru
/*
* В заменяемой строке можно не указывать имя сервера:
*
* proxy_redirect http://localhost:8000/two/ /;
*
* тогда будет подставлено основное имя сервера и порт, если он отличен от 80.
*/
> >> главная претензия - этот ужас срёт в файлы, управляемые debconf'ом.
> >> Хочу от него избавиться нафиг. Но есть вопрос.
> >>
> >> Хочу этот ужас приспособить для мультипроксирования на апач. Чтобы не
> >> менять конфиг nginx каждый раз при создании сайтов в Webmin (фтопку
> >> ISPManager!).
> >>
> >> Идея выглядит как-то так:
> >> server {
> >>
> >> listen 80;
> >> server_name чего-то-пока-не-знаю-чего;
> >> rewrite "^/(manager|myadmin)/"
> >> "https://$server_addr$uri"
> >>
> >> permanent;
>
> ВБ> Не надо так делать. Правильно:
>
> Неправильно. Перенаправление должно идти на адрес, а не на хост.
> Это же ISPManager... >.<
Смысл был не в этом. Подставьте $server_addr, кто мешает:
location ^~ /manager/ {
return 301 https://$server_addr$reques_uri;
}
location ^~ /myadmin/ {
return 301 https://$server_addr$reques_uri;
}
> ВБ> location ^~ /manager/ {
> ВБ> return 301 https://$host$reques_uri;
> ВБ> }
>
> ВБ> location ^~ /myadmin/ {
> ВБ> return 301 https://$host$reques_uri;
> ВБ> }
> >> error_page 404 = @fallback;
> >>
> >> location ~*
> >>
> >> \.(jpe?g|gif|pn[mg]|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
> >> try_files @statics @fallback ;
> >>
> >> }
>
> ВБ> Это работать не будет. Читаем внимательно:
> http://nginx.org/r/try_files/ru
>
> ВБ> Вы вероятно хотели:
>
> Вероятно. Подумал об этом, когда уже отпостил.
>
> ВБ> location ~*
> ВБ> \.(jpe?g|gif|pn[mg]|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
>
> ВБ> try_files $uri @fallback;
>
> ВБ> root /var/www/user/data/www/example.com;
> ВБ> access_log /var/www/httpd-logs/$server_name.access.log;
> ВБ> access_log /var/www/nginx-logs/user isp;
> ВБ> }
>
> ВБ> Вообще это ужасно и говорит о кривой структуре самого сайта.
>
> Претензии к идиотам из ISPManager...
> Что на счёт моего второго вопроса?
> 2. Что написать в server_name ?
Если вам ничего не нужно, можете вообще директиву server_name убрать.
У нее значение по умолчанию - пустая строка.
Кто же может за вас знать, какие хосты вы хотите сконфигурировать.
> Можно ли вынести список серверов в отдельный
> файл?
Директива include: http://nginx.org/r/include/ru
--
Валентин Бартенев
Подробная информация о списке рассылки nginx-ru