Я попробовал все решения, найденные на этом сайте и других, но все еще имею проблему с перенаправлением подстановочного субдомена с 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
}
Оказалось, что это кеш браузера. Как только он был очищен, перенаправления заработали. Иногда это самое простое.
Вы пропустили фактический оператор ssl
в блоке, который должен быть подстановочным символом ssl server {}
, поэтому у вас действительно есть http на 443 порт вместо https.