Enapiuz
@Enapiuz
велосипедостроительное бюро

Как на сайте с https выделить один роут с http?

Доброго времени суток.
Есть сайт, завернут в https, есть на нем одна-единственная страница, на которой будут разные iframe, которые очень даже могу и не быть https.
Задача следующая - показывать эту страницу с https и предупреждением со ссылкой на http (собственно в коде все делается), а так же показывать ее по http, редиректя остальные роуты на https.

Как оно выглядит сейчас:
server {
    server_name server.com;
    listen 80;

    location ~ ^/(hello|hello/.*)$ {
        uwsgi_pass  django;
        include  uwsgi_params; 
    }

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

}

server {
    listen      443 ssl spdy; 
    server_name server.com; 
    charset     utf-8; 

    # всякие настройки ssl, логи и прочая джанго-статика
  
    location / {    
        uwsgi_pass  django;
        include  uwsgi_params;
    }
}


Первый заход на страницу /hello происходит успешно, при повторном уже редирект на https происходит.

Есть подозрение, что во всем виновато вот это в сервере 80 порта
location / {
    rewrite  ^ https://$server_name$request_uri? permanent;
}

что редиректит статику и что запоминает браузер при последующем обновлении страницы.
Вот только как это обойти?
  • Вопрос задан
  • 325 просмотров
Пригласить эксперта
Ответы на вопрос 2
@mib
Попробуйте
location / {
rewrite ^ https://$server_name$request_uri? redirect;
}
Ответ написан
Комментировать
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
permanent не используйте, 301-й редирект кэшируется браузером.

return 302 используйте.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы