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.