Я пытаюсь защитить сайт с помощью 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;
}
}
Третий блок - это «основной» блок, который обслуживает URL-адрес www с https (отлично работает). 1-й блок перенаправляет все запросы http и не www на 3-й блок (отлично работает).
Второй блок не работает. То, что я пытаюсь достичь здесь, - это направлять любые https и не-www запросы к третьему блоку, но попытка доступа к сайту таким образом приводит к тому, что example.com отказался подключиться (в отличие от того, что Chrome называет ERR_CONNECTION_REFUSED тем, что нет ошибки отображается на вкладке «Сеть» для запроса, и это просто пустой запрос).
Я много чего пробовал и не понимаю, почему это так.
Дополнительная информация: журналы доступа nginx показывают ответ 200 / OK при доступе к URL-адресу блока 2 (https без www), но ответ просто пуст.
Решено - Это был случай неудачи из-за магии.
В панели управления регистратора доменного имени есть удобная настройка www / no-www, которая вызывает перенаправление, которое отменяет настройки DNS.
Отключение настройки удобства (т. Е. Выбор «без предпочтений») заставило фактические настройки DNS работать.