Я использую следующий блок конфигурации 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 для передачи non-https https и non-www к www по некоторым причинам не работает мой бэкенд Magento, я могу войти в прекрасный бэкенд, но когда я пытаюсь сделать что-либо как сбрасывание кэша или любой другой функции, это всегда говорит, что следующее и ничто сделаны
Это могло быть, потому что большинство настроек Nginx находится под блоком SSL?
-редактированный ответ для включения полной конфигурации.
Your https://MyDomain.co. uk
не переадресует на https://www.MyDomain.co.uk
, потому что в вашем https
блоке https
домен MyDomain.co.uk и *.MyDomain.co.uk
должны быть удалены MyDomain.co.uk
и *.MyDomain.co. uk
с вашего текущего сервера
блока, который слушает порт 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;
}
Таким образом, у вас будет блок сервера
для перенаправления других доменов, а затем главный сервер
блок, который будет обрабатывать запрос.
Итак, у вас есть три vhosts:
1) http
, который перенаправляет все запросы на www.MyDomain.co.uk
.
2) https
, который перенаправляет запросы MyDomain.co.uk
и *.MyDomain.co.uk
на www.MyDomain.co.uk
.
3) https
для обработки окончательного запроса на www.MyDomain.co.uk
.