Nginx: сайт без www, недоступный через SSL (соединение отказано)

Я пытаюсь защитить сайт с помощью SSL, используя nginx в Ubuntu 14.04.

Вот как выглядит мой файл блока сервера:

server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;
    return 301 https://www.example.com$request_uri;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    return 301 https://www.example.com$request_uri;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;


    root /var/www/html;

    index index.php;

    location = /favicon.ico { log_not_found off; access_log off; }

    location = /robots.txt { log_not_found off; access_log off; allow all; }

    location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
        expires max;
        log_not_found off;
    }

    location / {
        #try_files $uri $uri/ =404;
        #index index.php index.html index.htm index.nginx-debian.html;
        try_files $uri $uri/ /index.php$is_args$args;
    }

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

    location ~ /\.ht {
        deny all;
    }

    location ~ /.well-known {
        allow all;
    }
}

3-й блок - это "основной" блок, который обслуживает URL-адрес www с https (работает нормально). 1-й блок перенаправляет любые запросы http и не www на 3-й блок (работает нормально).

Второй блок не работает. То, чего я пытаюсь достичь, это направить любые запросы https и non-www в 3-й блок, но попытка получить доступ к сайту таким образом приводит к "example.com отказался подключаться" (отличается от того, что Chrome называет ERR_CONNECTION_REFUSED тем, что нет ошибки отображается на вкладке Сеть для запроса, и это просто пустой запрос).

Я перепробовал много вещей, и я в недоумении, почему это так.

Дополнительная информация: журналы доступа nginx показывают ответ 200/OK при доступе к URL-адресу блока 2 (https без www), но ответ просто пуст.

1 ответ

Решение

Решено - Это был случай неудачи из-за магии.

Панель управления регистратора доменных имен имеет удобную настройку www/no-www, которая вызывает перенаправление, которое переопределяет настройки DNS.

Отключение удобной настройки (т. Е. Выбор "без предпочтений") заставило работать фактические настройки DNS.

Другие вопросы по тегам