Nginx HTTP tidak berfungsi - mengunduh file bernama "unduh"

11

jika saya mengunjungi situs nginx saya dengan https itu berfungsi, tetapi dengan http itu mengunduh file yang disebut "download" (tanpa ekstensi apa pun), 57 byte dan membukanya dengan notepad dll hanya menunjukkan hal-hal omong kosong.

Inilah konfigurasi vhost saya:

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
sumber
Konfigurasi ini tidak masalah. Periksa apakah Anda menyatakan ulang nginx, firewall yang dikonfigurasi, atau yang lainnya
Alexey Ten
Juga, tanyakancurl -v http://domain.com
Alexey Ten
Terima kasih atas balasan Anda. Saya restart beberapa kali (saya mencoba mengubah bagian konfigurasi, tetapi tidak ada yang membantu), firewall saya juga oke. Saat memeriksa dengan ikal saya mendapat respons aneh: ▒▒ hanya ini - tidak menunjukkan kode sumber seperti halnya dengan https.
rzmpl
phpfpm harus aktif dan berjalan dan soket harus ada di /run/php/php7.0-fpm.sock.
Farhan
Itu benar. PHP berfungsi - Saya rasa ini bukan masalah PHP. Semuanya melalui HTTPS berfungsi, tidak peduli apakah itu php atau tidak. Tetapi jika saya mengetik http: // atau hanya domain (dalam hal ini harus diarahkan ke https) itu hanya mengunduh file kecil 57 byte yang disebut "download" - Nginx error.log tidak menunjukkan apa-apa juga.
rzmpl

Jawaban:

12

Saya menemukan apa yang menyebabkan masalah: Saya menggunakan listen 80 http2;konfigurasi vhost saya yang ternyata tidak berfungsi . Setelah saya menghapus http2 dari baris kata itu sekarang berfungsi normal lagi!

rzmpl
sumber
Ini akan mudah bagi orang untuk melihatnya, jika itu ada dalam pertanyaan Anda. Anda tidak boleh menghilangkan sesuatu yang penting lain kali Anda mengajukan pertanyaan.
Michael Hampton
Saya tidak menghilangkan apa pun. Bagaimana saya bisa mengetahuinya sebelumnya? Tidak perlu bertanya apakah aku tahu. Tapi apa pun, saya menyelesaikannya dan itulah yang penting.
rzmpl
3
Anda menghilangkan bagian apa pun dari konfigurasi yang berisi listen 80 http2;yang Anda katakan adalah masalahnya. Itu membuat ini mustahil bagi orang lain untuk mencari tahu.
Michael Hampton
1
Senang Anda memposting pertanyaan ini dan diikuti dengan solusi Anda! Saya baru saja menemukan ini dan tidak tahu apa yang menyebabkan unduhan file yang tampaknya acak. Menghapus http2dari satu situs non-SSL di server berfungsi!
Graham Swan
Saya mencari kemana-mana untuk ini, terima kasih! Akan lebih baik jika NGiNX akan memberikan peringatan konfigurasi saat ini terdeteksi.
aecend