Nonaktifkan SSL untuk jalur tertentu di Nginx


11

Saya memiliki situs Web di mana saya ingin semua permintaan dilakukan dengan HTTPS kecuali permintaan untuk url dengan jalur yang dimulai dengan /foo/. Bagaimana cara mengkonfigurasi ini di Nginx?

Saat ini saya menjalankan semua permintaan dengan 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;
        ...
    }
}

Apakah Anda ingin memaksa permintaan ke jalur itu untuk tidak menggunakan SSL, atau mengizinkan permintaan untuk tidak menggunakan SSL?
Shane Madden

Saya ingin mengizinkan permintaan ke jalur itu untuk menggunakan HTTP dan HTTPS.
hekevintran

Jawaban:


15

Tambahkan entri server kedua untuk non-ssl, port 80, melayani /foo/*dan mengarahkan semua yang lain ke URL HTTPS.

Mungkin kira-kira seperti ini ?:

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

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

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

Jawaban sempurna.
hekevintran
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.