Nginx HTTP не працює - завантажує файл під назвою "завантажити"


11

якщо я заходжу на свій сайт nginx з https, він працює, але за допомогою http він завантажує файл під назвою "скачати" (без розширення взагалі), 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;
    }

}

curl-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
Олексій

Дякую за вашу відповідь Я кілька разів перезапустив (я спробував змінити частини конфігурацій, але нічого не допомогло), мій брандмауер також добре. Під час перевірки завиткою я отримую дивну відповідь: ▒▒ тільки це - не показує вихідний код, як це робиться з https.
rzmpl

phpfpm має бути запущений і працює, а сокет повинен існувати в /run/php/php7.0-fpm.sock.
Фархан

Це робить. PHP працює - я не думаю, що це проблема PHP. Все над HTTPS працює, незалежно від того, php це чи ні. Але якщо я ввожу http: // або просто домен (у такому випадку його слід переспрямувати на https), він просто завантажує невеликий файл у 57 байт під назвою "завантажити" - Nginx error.log теж нічого не показує.
rzmpl

Відповіді:


12

Я з'ясував, що викликало проблему: я використовував listen 80 http2;у своєму vhost config, який, мабуть , не працює . Після того, як я видалив http2 із зазначеного рядка, він знову працює нормально!


Це було б легко помітити людям, якби це було у вашому питанні. Не слід пропускати нічого важливого наступного разу, коли ви ставите запитання.
Майкл Хемптон

Я нічого не пропускав. Як я мав це знати заздалегідь? Не треба було б питати, чи знаю я. Але що б там не було, я розібрався і ось що важливо.
rzmpl

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

1
Тож радий, що ви опублікували це запитання та дотримувались свого рішення! Я просто стикався з цим і не мав уявлення, що викликає, здавалося б, випадкове завантаження файлів. Видалення http2з одного не-SSL-сайту на сервері працювало!
Грехем Лебедь

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