Назад | Перейти на главную страницу

бэкэнд Nginx и Magento с пересылкой без www или https

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

это сделано для того, чтобы весь трафик, который приходит на мой сайт через следующие

всегда следует направлять 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 для пересылки не-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.