Nginx memungkinkan untuk memproses HTTP dan HTTPS dalam server
blok yang sama . Dengan demikian Anda tidak perlu menduplikasi arahan untuk keduanya dan dapat mengarahkan ulang jalur yang ingin Anda amankan
server {
listen 80 default_server;
listen 443 ssl;
... ssl certificate and other configs ...
location /user {
if ($scheme = 'http') {
rewrite ^ https://$http_host$request_uri? permanent;
}
}
... your basic configuration ...
}
Pastikan untuk tidak menaruh ssl on
garis di sana karena itu akan merusak HTTP biasa.
Secara opsional, Anda dapat mengalihkan semua permintaan lain dari HTTPS kembali ke HTTP dengan cara yang sama:
if ($scheme = 'https') {
rewrite ^ http://$http_host$request_uri? permanent;
}
UPDATE : seperti yang ditunjukkan Alexey Ten di bagian komentar, memeriksa scheme
setiap permintaan bukanlah ide yang sangat cerdas. Anda harus mengikuti cara deklaratif untuk mengkonfigurasi nginx Anda. Dalam hal ini, deklarasikan dua blok server dengan pengalihan oleh location
, pindahkan logika umum ke file yang terpisah dan include
keduanya. Jadi jawaban GruffTech lebih baik.