Hello! On Thu, Mar 23, 2017 at 06:18:21PM +0200, Vladimir Getmanshchuk wrote:
> Доброе время суток! > > С этим proxy_set_header какой-то АД: > > 1) Почему proxy_set_header дикректива уровнем ниже перетирает ВСЕ > proxy_set_header уровнем выше, а не только тот хедер который ресетишь? Так работает всё наследование всех директив в nginx'е. Если вы задаёте что-то на каком-то уровне конфигурации, то наследования с предыдущих уровней - не будет. Так сделано по ряду причин. И не в последнюю очередь потому, что такие конфигурации читать проще - если вы видите, что что-то явно написано, не надо думать, какие ещё чудеса прилетят с других уровней и что будет в итоге. Документация о таком поведение - явно говорит, http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_set_header: : Директивы наследуются с предыдущего уровня при условии, что на : данном уровне не описаны свои директивы proxy_set_header. Не стоит удивляться такому поведению. Вместо этого - стоит его понять и пользоваться преимуществами. > 2) Если делаешь proxy_set_header дважды (иногда пересекается из-за > include), то получаешь два хедера в HTTP запросе(от чего некоторые backends > сходят с ума, когда видят два хедера Host(например). > Почему не брать значение из последнего proxy_set_header? В HTTP вполне допустимо использование нескольких одинаковых заголовков, более того - явно специфицировано, когда можно, а когда - нельзя, и как трактовать. И во многих случаях это используется. Было бы странно ограничивать людей в том, что они могут написать в конфиге, причём совсем не так, как специфицирует используемый протокол. > Поймите правильно, не хочется писать proxy_set_header в каждом (вложенном > тоже?) локейшене, а использовать наследие. Не пишите, кто же вас заставляет. В случае правильно и грамотно написанной конфигурации - обычно хватает одного набора директив proxy_set_header на уровне http, возможно - с отдельными вкраплениями "специальных" наборов. Если очень нужно вносить локальные изменения в конкретных location'ах - можно использовать директиву include с неким базовым набором, дополняя его по необходимости. Но если вы регулярно сталкиваетесь с подобной проблемой - скорее всего вы что-то делаете не так. -- Maxim Dounin http://nginx.org/ _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru