Am o configurație nginx destul de complicată în care multe servicii diferite își expun punctele finale, cu multe diferite Locație{}
blocuri.
Nu am prea mult control asupra tuturor acestor configurații (pentru că multe echipe își adaugă propria conf), dar aș dori să adaug antetul HSTS în toate răspunsurile de la nginx.
Naiv am adăugat o
add_header Strict-Transport-Security "max-age=7776000; includeSubDomains" întotdeauna;
în conf. implicită pentru toate instanțele de server{}.
Dar eu sufăr de problema în cazul în care ultimul add_header
bloc învinge peste conf. mea implicită. Orice locație care are un add_header
in testamentul lor conf nu trimite antetul meu HSTS.
I.E:
[... snip ...]
Server {
asculta 443 ssl;
preferință nume_server.{{ domeniu }};
add_header Strict-Transport-Security "max-age=7776000; includeSubDomains" întotdeauna; # Pot să adaug cu ușurință asta
error_log /var/log/nginx/preference_error.log;
access_log /var/log/nginx/preference_access.log principal;
# / servește front -> proxy_pass to front container
Locație / {
expiră;
add_header Cache-Control fără cache; # aceste două directive add_header „șterge” antetul meu hsts
add_header X-Robots-Tag „noindex, nofollow”;
# anteturi proxy
preferință gazdă proxy_set_header.{{ domeniu }};
proxy_set_header X-Forwarded-Proto „https”;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $adresă_la distanță;
proxy_set_header X-SSL-CERT $ssl_client_cert;
proxy_set_header X-Robots-Tag „noindex, nofollow”;
proxy_set_header Actualizare $http_upgrade;
proxy_set_header Conexiune „upgrade”;
# trece la backend
proxy_pass http://preference_upstreams/;
}
}
Există o modalitate de a forța TOATE serverele/locațiile din nginx să adauge acest antet fără a-l adăuga manual în toate locațiile în care este prezentă o directivă add_header?