HTTPS Nginx слишком много перенаправлений, когда 2 домена указывают на один сервер - PullRequest
0 голосов
/ 01 марта 2020

здесь мой файл настроек

    server {
        root /var/www/[NAME]/latest;
        index index.php index.html index.htm index.nginx-debian.html;
        server_name [SITENAME].com www.[SITENAME].com [ANOTHER-SITENAME].com www.[ANOTHER-SITENAME].com;



        location / {
                try_files $uri $uri/ =404;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        }

        location ~ /\.ht {
                deny all;
        }


    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/[SITENAME].com-0001/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/[SITENAME].com-0001/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
    if ($host = www.[ANOTHER-SITENAME].com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = [ANOTHER-SITENAME].com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = www.[SITENAME].com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = [SITENAME].com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


        listen 80;
        server_name [SITENAME].com www.[SITENAME].com [ANOTHER-SITENAME].com www.[ANOTHER-SITENAME].com;
    return 404; # managed by Certbot

}

Everythign работает нормально, когда я открываю [SITENAME] .com

, но когда я открываю [ANOTHER-SITENAME] .com, я получаю сообщение об ошибке

Эта страница не работает [ДРУГОЕ SITENAME]. Переадресация вас слишком много раз.

почему? как это исправить?

1 Ответ

0 голосов
/ 01 марта 2020
  1. Ваша конфигурация НИКОГДА не работает для [ANOTHER-SITENAME] .com, потому что http не перенаправляет на https и https не работает, потому что SSL-сертификат предназначен только для [SITENAME] .com.
  2. Если у вас есть два сайта, которые используют одни и те же файлы, создайте для них отдельные блоки - это будет проще для управления и устранения неполадок.
  3. Сделайте это просто, помогите себе ... Например:

[SITENAME] .com

    server
    {
            listen 80;
            server_name www.[SITENAME].com [SITENAME].com;
            return 301 https://[SITENAME].com$request_uri;
    }
    server
    {
            listen 443 ssl;
            server_name www.[SITENAME];
            ssl_certificate /etc/letsencrypt/live/www.[SITENAME].com/fullchain.pem;
            ssl_certificate_key /etc/letsencrypt/live/www.[SITENAME].com/privkey.pem;
            return 301 https://[SITENAME].com$request_uri;
    }
    server
    {
            listen 443 ssl;
            server_name [SITENAME].com;
            root /var/www/[NAME]/latest;
            index index.php index.html index.htm index.nginx-debian.html;
            location / {
                    try_files $uri $uri/ =404;
            }
            location ~ \.php$ {
                    include snippets/fastcgi-php.conf;
                    fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
            }
            location ~ /\.ht {
                    deny all;
            }
    }

[ANOTHER-SITENAME] .com

    server
    {
            listen 80;
            server_name www.[ANOTHER-SITENAME].com [ANOTHER-SITENAME].com;
            return 301 https://[ANOTHER-SITENAME].com$request_uri;
    }
    server
    {
            listen 443 ssl;
            server_name www.[ANOTHER-SITENAME].com;
            ssl_certificate /etc/letsencrypt/live/www.[ANOTHER-SITENAME].com/fullchain.pem;
            ssl_certificate_key /etc/letsencrypt/live/www.[ANOTHER-SITENAME].com/privkey.pem;
            return 301 https://[ANOTHER-SITENAME].com$request_uri;
    }
    server
    {
            listen 443 ssl;
            server_name [ANOTHER-SITENAME].com;
            root /var/www/[NAME]/latest;
            index index.php index.html index.htm index.nginx-debian.html;               
            location / {
                    try_files $uri $uri/ =404;
            }
            location ~ \.php$ {
                    include snippets/fastcgi-php.conf;
                    fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
            }
            location ~ /\.ht {
                    deny all;
            }
    }
...