non-www или non-https передача Nginx и бэкенда Magento

Я использую следующий блок конфигурации 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 проблемы

  1. Все прекрасно, но https://MyDomain.co.uk никогда вперед к https://www.MyDomain.co.uk не уверенный, почему, но мог это произойти из-за того, что мой сертификат только действителен для www.MyDomain.co.uk а не для домена MyDomain.co.uk? но я видел другие сообщения в этом форумы, где пользователи достигают этого, если я не ошибаюсь?

  2. После создания выше изменения конфигурации блока Nginx для передачи non-https https и non-www к www по некоторым причинам не работает мой бэкенд Magento, я могу войти в прекрасный бэкенд, но когда я пытаюсь сделать что-либо как сбрасывание кэша или любой другой функции, это всегда говорит, что следующее и ничто сделаны magento_backend_issue

Это могло быть, потому что большинство настроек Nginx находится под блоком SSL?

0
задан 17 September 2015 в 21:04
1 ответ

-редактированный ответ для включения полной конфигурации.

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.

.
0
ответ дан 5 December 2019 в 12:03

Теги

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