52 ошибка: www not перенаправление в Edge / Chrome / Mobile: `ERR_EMPTY_RESPONSE` - PullRequest
0 голосов
/ 25 февраля 2020

Обновление: виновник выявлен:

В 4-й до последней строки, ssl должен быть удален. Не уверен почему. Если кто-нибудь может объяснить, почему, пожалуйста, добавьте свой ответ. Спасибо!

Информация о целевой системе:

  • Я нахожусь на Debian 10, Buster, использую nginx 1.42, последний стабильный certbot и php 7.3.
  • Есть два доменных имени, обслуживаемых по одному и тому же IP-адресу и портам; Итак, example.com и example1.com (example.com.conf показан ниже).
  • Все сырое, из коробки: nginx .conf равно без изменений , php Файлы конфигурации без изменений . Кроме LEMP и Certbot, ничего не установлено .

Нежелательное поведение:

WolfPack'08@NV89501:/# curl www.example.com
curl: (52) Empty reply from server
WolfPack'08@NV89501:/# curl http://example.com
curl: (52) Empty reply from server
WolfPack'08@NV89501:/# curl http://www.example.com
curl: (52) Empty reply from server
WolfPack'08@NV89501:/# curl https://www.example.com
WolfPack'08@NV89501:/# curl https://example.com
<!DOCTYPE html>

Лучшая попытка, спецификация сайта c config: см. Комментарий (###):

server {
        set $base /var/www/example.com;
        root $base/public;
        access_log /var/log/nginx/example.com/access.log;
        error_log /var/log/nginx/example.com/error.log;

        index index.php;
        server_name www.example.com example.com;

        location / {
                try_files $uri $uri/ /index.php?$args;
        }
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.3-fpm.sock;
    }

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

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

### SECTION INTENDED TO HANDLE WWW-to-NON_WWW REDIRECTS: ###
server {
    if ($host = www.example.com) {
        return 301 https://$host$request_uri;
    }
    if ($host = example.com) {
        return 301 https://$host$request_uri;
    }
        listen [::]:80;
        listen 80 ssl;  ### REMOVE SSL HERE TO FIX. ###
        server_name example.com www.example.com;
    return 301 https://example.com$request_uri;
}

Другие вещи, которые я пробовал:

  • Установка 301 в других местах (например, вверху, under index index.php;).
  • Использование 302 вместо 301.
  • Удаление listen 80 ssl;.
  • Использование return 301 https://$host$request_uri; вместо example.com.
  • Удаление всех других символических ссылок с включенных сайтов.

Конечно, Я перезагружаю nginx каждый раз , и Я не получаю ошибок .

1 Ответ

0 голосов
/ 25 февраля 2020

попробуйте следующие конфигурации, он в основном перенаправляет HTTP-трафик c на HTTPS для определенных доменов и обрабатывает https только для www.example.com example.com;

server {
  listen 80 default_server;
  server_name _;
  return 301 https://example.com$request_uri;
}

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

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



server {
  listen 443 ssl http2 default_server;
  server_name www.example.com example.com;

  set $base /var/www/example.com;
  root $base/public;

  access_log /var/log/nginx/example.com/access.log;
  error_log /var/log/nginx/example.com/error.log;
  index index.php;

  server_name www.example.com example.com;

  location / {
    try_files $uri $uri/ /index.php?$args;
  }

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


  ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
  include /etc/letsencrypt/options-ssl-nginx.conf;
  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

необходимо перезагрузить Nginx конфигурации после добавления вышеуказанных конфигов и тестирования в приватном окне в chrome и firefox (лучше протестировать с помощью этой команды curl curl --head http://zzz)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...