ปิดการใช้งาน SSL สำหรับเส้นทางที่แน่นอนใน Nginx


11

ฉันมีเว็บไซต์ที่ฉันต้องการร้องขอทั้งหมดที่จะต้องทำด้วย HTTPS ยกเว้นสำหรับการร้องขอไปยัง URL /foo/ที่มีเส้นทางที่เริ่มต้นด้วย ฉันจะกำหนดค่าสิ่งนี้ใน Nginx ได้อย่างไร

ตอนนี้ฉันเรียกใช้คำขอทั้งหมดด้วย SSL:

server {
    listen 443;

    ssl on;
    ssl_certificate /home/admin/ssl/ssl.crt;
    ssl_certificate_key /home/admin/ssl/ssl.key;

    server_name www.mydomain.com;

    location / {
        proxy_pass http://localhost:8000;
        ...
    }
}

คุณต้องการบังคับให้คำขอไปยังเส้นทางนั้นไม่ใช้ SSL หรืออนุญาตให้ร้องขอไม่ใช้ SSL หรือไม่
เชน Madden

ฉันต้องการอนุญาตคำขอไปยังพา ธ นั้นเพื่อใช้ HTTP และ HTTPS
hekevintran

คำตอบ:


15

เพิ่มรายการเซิร์ฟเวอร์ที่สองสำหรับ non-ssl, พอร์ต 80, การแสดง/foo/*และเปลี่ยนเส้นทางทุกอย่างไปยัง HTTPS URL

อาจจะเป็นเช่นนี้:

server {
    listen      80;
    server_name www.example.com;

    location ~ ^/(foo|foo/.*)$ {
        proxy_pass http://localhost:8000;
        ... 
    }

    location / {
        rewrite  ^ https://$server_name$request_uri? permanent;
    }
}

คำตอบที่สมบูรณ์แบบ
hekevintran
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.