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