Nginx HTTP funktioniert nicht - lädt eine Datei mit dem Namen "Download" herunter

10

Wenn ich meine Nginx-Site mit https besuche, funktioniert es, aber mit http lädt es eine Datei mit dem Namen "Download" (überhaupt keine Erweiterung), 57 Bytes herunter und öffnet sie mit Notepad usw. zeigt nur Kauderwelsch.

Hier ist meine vhost-Konfiguration:

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
quelle
Diese Konfiguration ist in Ordnung. Überprüfen Sie, ob Sie Nginx, konfigurierte Firewall oder etwas anderes angepasst haben
Alexey Ten
Überprüfen Sie auch mitcurl -v http://domain.com
Alexey Ten
Danke für deine Antwort. Ich habe mehrmals neu gestartet (ich habe versucht, Teile von Konfigurationen zu ändern, aber nichts hat geholfen), meine Firewall ist auch in Ordnung. Bei der Überprüfung mit Curl erhalte ich eine seltsame Antwort: ▒▒ Nur dies - zeigt den Quellcode nicht wie bei https an.
rzmpl
phpfpm sollte betriebsbereit sein und Socket sollte in /run/php/php7.0-fpm.sock vorhanden sein.
Farhan
Es tut. PHP funktioniert - Ich glaube nicht, dass es sich um ein PHP-Problem handelt. Alles über HTTPS funktioniert, egal ob es PHP ist oder nicht. Wenn ich jedoch http: // oder nur die Domain eingebe (in diesem Fall sollte sie zu https umleiten), wird nur eine kleine 57-Byte-Datei mit dem Namen "download" heruntergeladen - Nginx error.log zeigt auch nichts an.
rzmpl

Antworten:

11

Ich habe herausgefunden, was das Problem verursacht hat: Ich habe listen 80 http2;in meiner vhost-Konfiguration verwendet, was anscheinend nicht funktioniert . Nachdem ich http2 aus dieser Zeile entfernt habe, funktioniert es jetzt wieder normal!

rzmpl
quelle
Dies wäre für die Leute leicht zu erkennen gewesen, wenn es in Ihrer Frage gewesen wäre. Wenn Sie das nächste Mal eine Frage stellen, sollten Sie nichts Wichtiges auslassen.
Michael Hampton
Ich habe nichts ausgelassen. Wie sollte ich es vorher wissen können? Ich hätte nicht fragen müssen, ob ich es wüsste. Aber was auch immer, ich habe es geklärt und darauf kommt es an.
rzmpl
3
Sie haben den Teil Ihrer Konfiguration weggelassen, der Ihrer listen 80 http2;Meinung nach das Problem war. Das machte es unmöglich, dass jemand anderes es herausfand.
Michael Hampton
1
Ich bin froh, dass Sie diese Frage gestellt und Ihre Lösung verfolgt haben! Ich bin gerade darauf gestoßen und hatte keine Ahnung, was den scheinbar zufälligen Dateidownload verursacht hat. Das Entfernen http2von einer Nicht-SSL-Site auf dem Server hat funktioniert!
Graham Swan