LINUX.ORG.RU

nginx и приоритет http/s

 , , ,


0

2

Привет, коллеги.

Вопрос: есть nginx/1.0.15, в нем http и https для одного сервера, но при переходе на http://www.example.com он всё равно идет на https. сервер отдает 307 код. Реврайтами этого бы решать не хотелось, есть ли способ как-то указать, что при явном указании http он переходил на http, или наоборот: на https только при явном указании https? Условный конфиг:

server {
    listen 80 default_server;
    server_name example.com www.example.com sub1.example.com
    location / {
        proxy_pass http://127.0.0.1:1234
        proxy_redirect     off;

        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
}


server {
    listen 443 ssl;
    server_name example.com www.example.com sub2.example.com
    ssl on;
    ssl_prefer_server_ciphers on;
    ssl_certificate             /etc/crt.crt;
    ssl_certificate_key         /etc/key.key;

    location / {
        proxy_pass http://127.0.0.1:1234
        proxy_redirect     off;

        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
}  

Отбой, проблему решил. Дело, конечно, не в nginx-е. Дело в самом браузере. Он «получал» 307-й редирект (ещё ДО связи с сервером), потому что на сервере был настроен HSTS, который ещё не протух у клиента. Решение: 1. Правим конфиг

    add_header Strict-Transport-Security "max-age=0";
2. Заходим на сайт. Он переводит нас на https. Отдает новый заголовок HSTS (свежепротухший). 3. Браузер отменяет политику HSTS. 4. Чистим кеш.

fcctoo ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.