Nginx memungkinkan untuk memproses HTTP dan HTTPS dalam serverblok 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 ongaris 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 schemesetiap 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 includekeduanya. Jadi jawaban GruffTech lebih baik.