Назад | Перейти на главную страницу

Отключить SSL для определенных путей в Nginx

У меня есть веб-сайт, на котором я хочу, чтобы все запросы выполнялись с помощью 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;
        ...
    }
}

Добавьте вторую запись сервера для non-ssl, порт 80, обслуживающий /foo/* и перенаправление всего остального на URL HTTPS.

Может как то так ?:

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

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

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