Задать вопрос

Почему nginx автоматически редиректит http на https?

Есть nginx конфиг:

server {
        listen 80 default;
        root /var/www/....;
        index index.php index.html index.htm;
        server_name site.com;

        location / {
                try_files $uri $uri/ =404;
        }

        location ~ \.php$ {
                add_header 'Access-Control-Allow-Origin' '*';
                add_header 'Access-Control-Allow-Methods' 'POST, GET, OPTIONS';
                add_header 'Access-Control-Max-Age' 1728000;

                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }
}

server {
        listen 443 ssl;
        root /var/www/....;
        index index.php index.html index.htm;
        server_name site.com;

        ##
        # SSL
        ##
        ssl_certificate     /usr/local/ssl/sert.crt;
        ssl_certificate_key /usr/local/ssl/private.key;
        ssl_session_timeout 5m;
        ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
        ssl_prefer_server_ciphers on;
        keepalive_timeout   60;
        add_header Strict-Transport-Security 'max-age=604800';

        location / {
                try_files $uri $uri/ =404;
        }

        location ~ \.php$ {
                add_header 'Access-Control-Allow-Origin' '*';
                add_header 'Access-Control-Allow-Methods' 'POST, GET, OPTIONS';
                add_header 'Access-Control-Max-Age' 1728000;

                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_param HTTPS on;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }
}

При переходе на http://my.site.com, происходит автоматический редирект на https://my.site.com, но я такого не настраивал и не кодил. В чем может быть проблема? Или быть может, я ошибся с конфигом?
  • Вопрос задан
  • 3260 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
add_header Strict-Transport-Security 'max-age=604800';


А чего вы ожидали? )
Как только браузер зайдет на этот хост по https, он больше не будет обращаться на него по http из-за полученного заголовка Strict-Transport-Security (переводится как "всегда используй HTTPS для связи с этим сайтом").
Как его сбросить в браузере, кстати, хрен знает - чистка кеша не помогает.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
kompi
@kompi
nullstack devoops
В данном конфиге нет переадресаций, посмотрите в скриптах php/js на наличие редиректов.
PS Надеюсь, вы не забываете делать рестарт сервера после изменения конфигов.
Ответ написан
@Random_var
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

В .htacces нет чего - то подобного?
Ответ написан
Комментировать
vvpoloskin
@vvpoloskin
Инженер связи
Потому что конфиг так не пишут) У тебя должно быть для каждого serverа listen 80 и listen 443, и там укажи redirect. Вернее пишут, но это не логично. Не понятно, что произойдет, если укажешь различные server_name. А еще сейчас модно редиректить с помощью HTTP-Strict-Transport-Security
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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