У меня довольно сложная конфигурация nginx, в которой множество разных служб выставляют свои конечные точки со множеством разных место расположения{}
блоки.
У меня нет большого контроля над всеми этими конфигурациями (поскольку многие команды добавляют свои собственные конфиги), но я хотел бы добавить заголовок HSTS во все ответы от nginx.
Я по наивности добавил
add_header Strict-Transport-Security "max-age=7776000; includeSubDomains" всегда;
в моей конфигурации по умолчанию для всех экземпляров server{}.
Но я страдаю от проблемы, когда последний add_header
блокировать выигрывает над моей конфигурацией по умолчанию. Любое место, которое имеет add_header
в их конфе будет нет отправить мой заголовок HSTS.
То есть:
[...отрезать...]
сервер {
слушать 443 ssl;
предпочтение server_name.{{ домен }};
add_header Strict-Transport-Security "max-age=7776000; includeSubDomains" всегда; # я могу легко добавить это
error_log /var/log/nginx/preference_error.log;
access_log /var/log/nginx/preference_access.log основной;
# / обслуживает передний -> proxy_pass для переднего контейнера
место расположения / {
истекает;
add_header Cache-Control без кеша; # эти две директивы add_header "стирают" мой заголовок hsts
add_header X-Robots-Tag "noindex, nofollow";
# заголовки прокси
настройка хоста proxy_set_header.{{ домен }};
proxy_set_header X-Forwarded-Proto "https";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-SSL-CERT $ssl_client_cert;
proxy_set_header X-Robots-Tag "noindex, nofollow";
proxy_set_header Обновить $http_upgrade;
proxy_set_header Соединение "обновление";
# переход к бэкенду
proxy_pass http://preference_upstreams/;
}
}
Есть ли способ заставить ВСЕ серверы/места в nginx добавлять этот заголовок, не добавляя его вручную во все места, где присутствует директива add_header?