Nginx อนุญาตให้ประมวลผลทั้ง HTTP และ HTTPS ภายในserver
บล็อกเดียวกัน ดังนั้นคุณไม่จำเป็นต้องทำซ้ำคำสั่งทั้งคู่และสามารถเปลี่ยนเส้นทางที่คุณต้องการรักษาความปลอดภัย
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 ...
}
ตรวจสอบให้แน่ใจว่าไม่ได้วางssl on
บรรทัดไว้เพราะจะทำให้ HTTP ธรรมดาเสีย
คุณสามารถเปลี่ยนเส้นทางคำขออื่น ๆ ทั้งหมดจาก HTTPS กลับไปที่ HTTP ในลักษณะเดียวกันได้:
if ($scheme = 'https') {
rewrite ^ http://$http_host$request_uri? permanent;
}
ปรับปรุง : เป็น Alexey Ten กรุณาชี้ให้เห็นในส่วนความเห็นการตรวจสอบscheme
คำขอแต่ละครั้งไม่ได้เป็นความคิดที่สดใสมาก คุณควรทำตามวิธีการกำหนดค่า nginx ของคุณ ในกรณีนี้ให้ประกาศเซิร์ฟเวอร์สองบล็อกด้วยการเปลี่ยนเส้นทางlocation
ย้ายตรรกะทั่วไปไปยังไฟล์แยกและinclude
ทั้งสองอย่าง ดังนั้นคำตอบของ GruffTech จึงดีกว่า