HTTP Nginx non funziona: scarica un file chiamato "download"


11

se visito il mio sito nginx con https funziona, ma con http sta scaricando un file chiamato "download" (nessuna estensione), 57 byte e aprendolo con il blocco note ecc. mostra solo cose incomprensibili.

Ecco la mia configurazione del 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 
▒▒

Questa configurazione è OK. Controlla se hai ripristinato nginx, configurato il firewall o qualcos'altro
Alexey Ten,

Inoltre, controlla concurl -v http://domain.com
Alexey Ten,

Grazie per la tua risposta Ho riavviato più volte (ho provato a cambiare parti di configurazioni, ma nulla mi ha aiutato), anche il mio firewall è a posto. Quando controllo con curl ottengo una risposta strana: ▒▒ solo questo - non mostra il codice sorgente come fa con https.
rzmpl,

phpfpm dovrebbe essere attivo e funzionante e il socket dovrebbe esistere in /run/php/php7.0-fpm.sock.
Farhan,

Lo fa. PHP funziona - Non penso che sia un problema PHP. Tutto su HTTPS funziona, indipendentemente dal fatto che sia php o meno. Ma se scrivo http: // o solo il dominio (nel qual caso dovrebbe reindirizzare a https) scarica solo un piccolo file di 57 byte chiamato "download" - Nginx error.log non mostra nulla.
rzmpl,

Risposte:


12

Ho scoperto cosa ha causato il problema: stavo usando listen 80 http2;nella mia configurazione di vhost che apparentemente non funziona . Dopo aver rimosso http2 da detta linea, ora funziona di nuovo normalmente!


Sarebbe stato facile per le persone individuarlo, se fosse stato nella tua domanda. La prossima volta che fai una domanda non dovresti omettere nulla di importante.
Michael Hampton,

Non ho omesso nulla. Come avrei potuto saperlo in anticipo? Non avrei dovuto chiedere se lo sapessi. Ma qualunque cosa, l'ho risolto ed è quello che conta.
rzmpl,

3
Hai omesso qualsiasi parte della tua configurazione contenuta listen 80 http2;che dici fosse il problema. Ciò ha reso impossibile per chiunque altro capire.
Michael Hampton,

1
Sono contento di aver pubblicato questa domanda e di aver seguito la tua soluzione! L'ho appena incontrato e non avevo idea di cosa stesse causando il download del file apparentemente casuale. La rimozione http2da un sito non SSL sul server ha funzionato!
Graham Swan,

Ho cercato ovunque per questo, grazie! Sarebbe bello se NGiNX lanciasse un avviso di configurazione quando questo viene rilevato.
attendere il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.