Saya memiliki proxy terbalik pada nginx yang proksi beberapa situs. Saya baru-baru ini mengaktifkan Keamanan Transportasi HTTP Ketat untuk semua situs web yang mendukung SSL. Saya sekarang memiliki satu situs yang tidak ingin ini diaktifkan.
Saya pikir saya hanya akan melakukan pemeriksaan sederhana jika hulu saya sudah mengirim saya- Strict-Transport-Security
header, dan jika tidak, tambahkan saja. Dengan begitu, hulu saya dapat mengirim header STS yang berisi max-age=0
untuk menghindari HSTS diaktifkan oleh proxy.
Saya pikir saya baru saja mengubah konfigurasi saya sebagai berikut:
location / {
proxy_pass http://webservers;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto "https";
if ($upstream_http_strict_transport_security = "") {
add_header Strict-Transport-Security "max-age=15552000";
}
}
Tapi, mungkin karena jika itu jahat , ini tidak berhasil. Saya telah mencoba banyak hal berbeda untuk memastikan variabel benar-benar ada (yang terjadi), tetapi tampaknya tidak ada yang membantu.
Bagaimana saya bisa membuat ini bekerja?
sumber
Itu karena
if
dieksekusi sebelum proxy berlangsung dan saat ini tidak ada variabel$upstream_http_strict_transport_security
.Anda bisa menggunakan
header_filter_by_lua
arahan dari modul Lua. Misalnyasumber
apt-get -t wheezy-backports install nginx-extras
.