Vô hiệu hóa SSL cho một số đường dẫn nhất định trong Nginx


11

Tôi có một trang web nơi tôi muốn tất cả các yêu cầu được thực hiện với HTTPS ngoại trừ các yêu cầu tới các url có đường dẫn bắt đầu bằng /foo/. Làm cách nào để định cấu hình cái này trong Nginx?

Ngay bây giờ tôi chạy tất cả các yêu cầu với 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;
        ...
    }
}

Bạn có muốn buộc các yêu cầu đến đường dẫn đó không sử dụng SSL hoặc cho phép các yêu cầu không sử dụng SSL không?
Shane Madden

Tôi muốn cho phép các yêu cầu đến đường dẫn đó để sử dụng HTTP và HTTPS.
hekevintran

Câu trả lời:


15

Thêm mục nhập máy chủ thứ hai cho không ssl, cổng 80, phục vụ /foo/*và chuyển hướng mọi thứ khác sang URL HTTPS.

Có lẽ một cái gì đó như thế này?:

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

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

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

Câu trả lời hoàn hảo.
hekevintran
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.