Nginx HTTP не работает - загружает файл с именем «скачать»


11

если я захожу на мой сайт nginx с https, он работает, но с http он загружает файл с именем «download» (без расширения), 57 байт и открывает его с помощью блокнота и т. д., просто показывает бессмысленные вещи.

Вот мой конфиг vhost:

server {
    server_name www.domain.com domain.com;
    listen 80;

    return 301 https://domain.com$request_uri;
}

server {
    server_name www.domain.com
    listen 443 ssl;

    /* SSL Stuff */

    return 301 https://domain.com$request_uri;
}


server {
    server_name domain.com;
    index index.php index.html index.htm;
    listen 443 ssl;
    root /usr/share/nginx/domain.com;

    /* SSL Stuff */

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


location ~ \.php$ {
            try_files $uri =404;
            fastcgi_pass unix:/run/php/php7.0-fpm.sock;
            fastcgi_param SCRIPT_FILENAME            $document_root$fastcgi_script_name;
            include fastcgi_params;
}

    location ~ /\. {
            deny  all;
    }

}

завиток-v:

curl -v http:/domain.com * 
Rebuilt URL to: http://domain.com/ * 
Hostname was NOT found in DNS cache * 
Trying 175.*.*.*... * 
Connected to domain.com (175.*:*:*) port 80 (#0)
 > GET / HTTP/1.1 > User-Agent: curl/7.38.0 
> Host: domain.com > Accept: */* 
> * Connection #0 to host domain.com left intact 
▒▒

Этот конфиг в порядке. Проверьте, не переустановили ли вы nginx, не настроили ли вы брандмауэр или что-то еще
Алексей Тен

Кроме того , проверьте сcurl -v http://domain.com
Алексей Тен

Спасибо за ответ. Я несколько раз перезагружался (пробовал менять части конфигов, но ничего не помогало), мой брандмауэр тоже в порядке. При проверке с помощью curl я получаю странный ответ: ▒▒ только это - не показывает исходный код, как это происходит с https.
rzmpl

phpfpm должен быть запущен, а сокет должен существовать в /run/php/php7.0-fpm.sock.
Фархан

Оно делает. PHP работает - я не думаю, что это проблема PHP. Все по HTTPS работает, независимо от того, php это или нет. Но если я набираю http: // или просто домен (в этом случае он должен перенаправить на https), он просто загружает небольшой 57-байтовый файл с именем «download» - Nginx error.log тоже ничего не показывает.
rzmpl

Ответы:


12

Я выяснил, что вызвало проблему: я использовал listen 80 http2;в своем конфиге vhost, который, очевидно , не работает . После того, как я удалил http2 из указанной строки, теперь он снова работает нормально!


Это было бы легко заметить, если бы это было в вашем вопросе. Вы не должны пропускать ничего важного в следующий раз, когда задаете вопрос.
Майкл Хэмптон

Я ничего не пропустил. Как я должен был знать это заранее? Не нужно было спрашивать, если бы я знал. Но как бы то ни было, я разобрался, и вот что важно.
rzmpl

3
Вы пропустили любую часть вашей конфигурации, listen 80 http2;которая, по вашему мнению, была проблемой. Это сделало это невозможным для других.
Майкл Хэмптон

1
Так рада, что вы опубликовали этот вопрос и последовали вашему решению! Я только столкнулся с этим и понятия не имел, что вызывало, казалось бы, случайную загрузку файла. Удаление http2с одного сайта без SSL на сервере работало!
Грэм Свон

Я искал везде это, спасибо! Было бы хорошо, если бы NGiNX выдаст предупреждение о конфигурации, когда это будет обнаружено.
Выходной
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.