Я использую следующий блок конфигурации Nginx
server {
listen 80;
server_name MyDomain.co.uk www.MyDomain.co.uk *.MyDomain.co.uk;
return 301 https://www.MyDomain.co.uk$request_uri;
}
server {
listen 443;
server_name MyDomain.co.uk www.MyDomain.co.uk *.MyDomain.co.uk;
access_log /var/www/vhosts/MyDomain.co.uk/logs/access.log;
error_log /var/www/vhosts/MyDomain.co.uk/logs/error.log;
root /var/www/vhosts/MyDomain.co.uk/httpdocs;
ssl on;
ssl_certificate /etc/nginx/ssl/MyDomain.co.uk.crt;
ssl_certificate_key /etc/nginx/ssl/MyDomain.co.uk.key;
ssl_protocols TLSv1.1 TLSv1.2;
...
...
...
}
это сделано для того, чтобы весь трафик, который приходит на мой сайт через следующие
http://MyDomain.co.uk
http://www.MyDomain.co.uk
https://MyDomain.co.uk
всегда следует направлять https://www.MyDomain.co.uk
но у меня 2 проблемы
Все хорошо но https://MyDomain.co.uk
никогда не пересылает https://www.MyDomain.co.uk
не уверен, почему, но могло ли это быть связано с тем, что мой сертификат действителен только для www.MyDomain.co.uk
а не для домена MyDomain.co.uk
? но я видел другие сообщения на этом форуме, где пользователи достигают этого, если я не ошибаюсь?
После внесения вышеупомянутого изменения конфигурации блока Nginx для пересылки не-https на https и не-www на www по какой-то причине мой бэкэнд Magento не работает, я могу войти в систему, чтобы бэкэнд нормально, но когда я пытаюсь сделать что-нибудь вроде очистки кеша или любая другая функция всегда говорит следующее, и ничего не делается
Может быть, потому, что большинство настроек Nginx заблокировано SSL?
Отредактированный ответ, включающий полную конфигурацию.
Ваш https://MyDomain.co.uk
не жду https://www.MyDomain.co.uk
потому что у вас есть MyDomain.co.uk
домен в вашем https
блок, в котором нет редиректов.
Вы должны удалить MyDomain.co.uk
и *.MyDomain.co.uk
из вашего текущего server
блок, который слушает 443
порт, и вы должны добавить следующий блок:
server {
listen 80;
server_name MyDomain.co.uk www.MyDomain.co.uk *.MyDomain.co.uk;
return 301 https://www.MyDomain.co.uk$request_uri;
}
server {
listen 443;
server_name MyDomain.co.uk *.MyDomain.co.uk;
ssl on;
ssl_certificate /etc/nginx/ssl/MyDomain.co.uk.crt;
ssl_certificate_key /etc/nginx/ssl/MyDomain.co.uk.key;
ssl_protocols TLSv1.1 TLSv1.2;
return 301 https://www.MyDomain.co.uk$request_uri;
}
server {
listen 443;
server_name www.MyDomain.co.uk;
access_log /var/www/vhosts/MyDomain.co.uk/logs/access.log;
error_log /var/www/vhosts/MyDomain.co.uk/logs/error.log;
root /var/www/vhosts/MyDomain.co.uk/httpdocs;
ssl on;
ssl_certificate /etc/nginx/ssl/MyDomain.co.uk.crt;
ssl_certificate_key /etc/nginx/ssl/MyDomain.co.uk.key;
ssl_protocols TLSv1.1 TLSv1.2;
}
Таким образом у вас будет server
блок для перенаправления других доменов, а затем основной server
блок, который будет обрабатывать запрос.
Итак, у вас есть три хоста:
1) http
, который перенаправляет все запросы на www.MyDomain.co.uk
2) https
, который перенаправляет MyDomain.co.uk
и *.MyDomain.co.uk
запросы к www.MyDomain.co.uk
3) https
для обработки окончательного запроса к www.MyDomain.co.uk
.