Re: rewrite в именованный location

Maxim Dounin mdounin на mdounin.ru
Пт Апр 14 17:09:00 UTC 2017


Hello!

On Fri, Apr 14, 2017 at 07:10:08PM +0300, Дмитрий Мурзин wrote:

> Спасибо за ответ!
> Хороший доклад, многое проясняет.
> 
> Если можно, спрошу про ещё одну конфигурацию:
> location @proxy1 {
>     ...много строк настройки первого прокси...
> }
> location /png {
>     error_page 418 =@proxy1; return 418;
> }
> location /pic {
>     error_page 418 =@proxy1; return 418;
> }
> 
> location @proxy2 {
>     ...много других строк настройки второго прокси...
> }
> location /some_location {
>     error_page 418 =@proxy2; return 418;
> }
> location /some_another_location {
>     error_page 418 =@proxy2; return 418;
> }
> 
> Правда же, что если директивы настроек @proxy1 и @proxy2 разные, 
> то не получится как в предыдущей конфигурации вынести на верхний уровень общую,
> (то есть придётся использовать некрасивый хак с error_page, 
> либо copypaste, как советуют в докладе)?

Конкретно в приведённой конфигурации - можно воспользоваться тем, 
что требующие разных конфигураций location'ы имеют общие префиксы, 
и сделать конфигурацию с вложенными location'ами:

    location /p {
        ... first proxy settings ...

        location /png {
            proxy_pass ...
        }

        location /pic {
            proxy_pass ...
        }
    }

    location /some_ {
        ... second proxy settings ...

        location /some_location {
            proxy_pass ...
        }

        location /some_another_location {
            proxy_pass ...
        }
    }

В общем случае так, очевидно, сделать не получится.  Наиболее 
общее решение - копировать конфигурацию.  В случае, если 
копировать очень не хочется - можно воспользоваться директивой 
include.

-- 
Maxim Dounin
http://nginx.org/


Подробная информация о списке рассылки nginx-ru