首页 > 解决方案 > 当 2 个域指向同一服务器时,HTTPS Nginx 重定向过多

问题描述

这是我的conf文件

    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

}

当我打开 [SITENAME].com 时,一切正常

但是当我打开 [ANOTHER-SITENAME].com 时,我收到一条错误消息

此页面无法正常工作 [ANOTHER-SITENAME].com 已将您重定向太多次。

为什么?如何解决这个问题?

标签: nginxservervirtual-server

解决方案


  1. 您的配置永远不会适用于 [ANOTHER-SITENAME].com,因为 http 已重定向到 https 而 https 不起作用,因为 SSL 证书仅适用于 [SITENAME].com。
  2. 如果有两个使用相同文件的站点,请为它们制作单独的块 - 这将更易于管理和排除故障。
  3. 让它简单,帮助自己......例如:

[站点名称].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;
            }
    }

推荐阅读