Перенаправление/перезапись подстановочных доменов к ssl в nginx

Я попробовал все решения, найденные на этом сайте и других, но все еще имею проблему с перенаправлением подстановочного субдомена с http к https. Я все еще заканчиваю с

https://%2A.example.com/site_admin

Вышеупомянутые дисплеи URL в Chrome и "Этой странице не могут быть отображены" в IE, и "Ваше соединение не является частным" от хрома на мой телефон.

Неподстановочный знак nginx блоки сервера хорошо работает.

Я попробовал, переписывают и перенаправляют 301 в блоке сервера для http подстановочных знаков, но он все еще переписывает URL к %A2 (*). Я думаю, что сервер по умолчанию использует server_name *.example.com, но даже когда с помощью $host он все еще переписывает как *. Есть ли другая директива, которая должна быть включена?

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

    # tell users to go to SSL version this time
    if ($ssl_protocol = "") {
       rewrite     ^   https://$server_name$request_uri? permanent;
    }
}
server {
    listen 443 ssl;
    server_name example.com www.example.com;

    ## ssl and locations not shown
}

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

    # tell users to go to SSL version this time
    if ($ssl_protocol = "") {
       rewrite     ^   https://$server_name$request_uri? permanent;
    }
}
server {
    listen 443 ssl;
    server_name manager.example.com ;

    ## ssl and locations not shown
}

server {
    listen  80 default_server;
    server_name *.example.com "" ;

    # tell users to go to SSL version this time
    if ($ssl_protocol = "") {
        rewrite     ^   https://$host$request_uri? permanent;
        #rewrite     ^   https://$server_name$request_uri? permanent;
}

}
server {
    listen 443  default_server;
    server_name *.example.com ;

    ssl on;
    ## other ssl and locations not shown
}
-1
задан 20 November 2014 в 20:05
2 ответа

Оказалось, что это кеш браузера. Как только он был очищен, перенаправления заработали. Иногда это самое простое.

1
ответ дан 5 December 2019 в 19:54

Вы пропустили фактический оператор ssl в блоке, который должен быть подстановочным символом ssl server {} , поэтому у вас действительно есть http на 443 порт вместо https.

0
ответ дан 5 December 2019 в 19:54

Теги

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