HTTP Nginx ne fonctionne pas - télécharge un fichier appelé «téléchargement»

11

si je visite mon site nginx avec https, cela fonctionne, mais avec http, il télécharge un fichier appelé "download" (aucune extension que ce soit), 57 octets et l'ouvre avec le bloc-notes, etc. montre juste du charabia.

Voici ma configuration 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 
▒▒
rzmpl
la source
Cette config est OK. Vérifiez si vous avez retraité nginx, configuré un pare-feu ou autre chose
Alexey Ten
Consultez égalementcurl -v http://domain.com
Alexey Ten
Merci pour votre réponse. J'ai redémarré plusieurs fois (j'ai essayé de changer des parties de configs, mais rien n'y fait), mon pare-feu est également correct. Lors de la vérification avec curl, j'obtiens une réponse étrange: ▒▒ juste ceci - n'affiche pas le code source comme il le fait avec https.
rzmpl
phpfpm doit être opérationnel et le socket doit exister dans /run/php/php7.0-fpm.sock.
Farhan
Cela fait. PHP fonctionne - je ne pense pas que ce soit un problème PHP. Tout sur HTTPS fonctionne, qu'il s'agisse de php ou non. Mais si je tape http: // ou juste le domaine (auquel cas il doit rediriger vers https), il télécharge simplement un petit fichier de 57 octets appelé "download" - Nginx error.log n'affiche rien non plus.
rzmpl

Réponses:

12

J'ai découvert la cause du problème: j'utilisais listen 80 http2;dans ma configuration vhost qui ne fonctionne apparemment pas . Après avoir supprimé http2 de cette ligne, il fonctionne à nouveau normalement!

rzmpl
la source
Cela aurait été facile à repérer, si cela avait été dans votre question. Vous ne devez pas omettre quoi que ce soit d'important la prochaine fois que vous poserez une question.
Michael Hampton
Je n'ai rien oublié. Comment devrais-je pouvoir le savoir à l'avance? Je n'aurais pas eu besoin de demander si je savais. Mais peu importe, je l'ai réglé et c'est ce qui compte.
rzmpl
3
Vous avez omis la partie de votre configuration listen 80 http2;qui contenait le problème. Cela a rendu cela impossible pour quiconque de comprendre.
Michael Hampton
1
Je suis ravi d'avoir posté cette question et de suivre votre solution! Je viens de rencontrer cela et je n'avais aucune idée de la cause du téléchargement du fichier apparemment aléatoire. La suppression http2d'un site non SSL sur le serveur a fonctionné!
Graham Swan
J'ai cherché partout pour ça, merci! Ce serait bien si NGiNX lançait un avertissement de configuration lorsque cela était détecté.
retour