Pertanyaan nginx: HSTS pada halaman dengan otentikasi www


Apakah mungkin, pada nginx, untuk mengirim header Strict-Transport-Security, bahkan pada halaman yang memerlukan WWW-Authentication?

Ketika saya memiliki keduanya auth_basic dan add_header Strict-Transport-Security "max-age=2592000";, tajuk HSTS tidak dikirim:

$ curl -Ik https://****************
HTTP/1.1 401 Unauthorized
Server: nginx/1.4.6 (Ubuntu)
Date: Sun, 14 Sep 2014 17:56:08 GMT
Content-Type: text/html
Content-Length: 203
Connection: keep-alive
WWW-Authenticate: Basic realm="*********"

saya t aku s dikirim pada halaman berbeda, yang tidak memerlukan otentikasi, jadi add_header direktif memiliki efek - tidak ketika membutuhkan otentikasi.


5
2017-09-14 18:03




Apa konfigurasi nginx lengkapnya? - Tero Kilkanen


Jawaban:


Itu mungkin, tetapi tidak dengan add_header direktif, karena tidak melakukan apa pun dalam kasus 401 tanggapan tidak sah.

Deskripsi untuk direktif add_header di ngx_http_headers_module  dokumentasi mengatakan:

Menambahkan bidang yang ditentukan ke header respons asalkan   kode respons sama dengan 200, 201, 204, 206, 301, 302, 303, 304, atau 307. A   nilai dapat berisi variabel.

Untuk mengirim header HSTS pada setiap halaman, Anda harus mengkompilasi nginx dengan ngx_headers_more modul (atau hanya menginstal nginx-extras paket jika Anda menggunakan Debian), dan tambahkan baris berikut ke file konfigurasi nginx Anda:

more_set_headers "Strict-Transport-Security: max-age=31536000; includeSubDomains";

5
2018-01-11 14:57





Pada Nginx 1.7.5, dirilis 16 September 2014, ini mudah dicapai dengan menambahkan "always"Tandai ke Anda add_header direktif. Modul tambahan tidak lagi diperlukan. :-)

add_header Strict-Transport-Security "max-age=2592000" always;

Sebagai add_header dokumentasi sekarang menjelaskan:

Jika itu always parameter ditentukan (1.7.5), kolom header akan ditambahkan terlepas dari kode respon.

Dari salah satu aplikasi web saya sendiri (diedit):

$ curl -I https://example.com/
HTTP/1.1 401 UNAUTHORIZED
Server: nginx/1.11.3
Date: Wed, 31 Aug 2016 15:37:59 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 17
Connection: keep-alive
WWW-Authenticate: Basic realm="example"
Strict-Transport-Security: max-age=31536000

5
2017-08-31 15:37