Nginx HTTP nie działa - pobiera plik o nazwie „pobierz”

12

jeśli odwiedzę moją stronę nginx z https, to działa, ale przy http pobiera plik o nazwie „pobierz” (bez rozszerzenia), 57 bajtów i otwieranie go za pomocą notatnika itp. pokazuje po prostu bełkot.

Oto moja konfiguracja vhosta:

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
źródło
Ta konfiguracja jest OK. Sprawdź, czy przekształciłeś nginx, skonfigurowałeś zaporę ogniową lub coś innego
Alexey Ten
Sprawdź również zcurl -v http://domain.com
Alexey Ten
Dziękuję za odpowiedź. Zrestartowałem się kilka razy (próbowałem zmienić części konfiguracji, ale nic nie pomogło), moja zapora jest również w porządku. Podczas sprawdzania za pomocą curl dostaję dziwną odpowiedź: ▒▒ tylko to - nie pokazuje kodu źródłowego, jak to ma miejsce w przypadku https.
rzmpl
phpfpm powinien być uruchomiony, a gniazdo powinno istnieć w /run/php/php7.0-fpm.sock.
Farhan
To robi. PHP działa - nie sądzę, że jest to kwestia PHP. Wszystko przez HTTPS działa, bez względu na to, czy jest to php czy nie. Ale jeśli wpiszesz http: // lub tylko domenę (w takim przypadku powinien przekierować do https), po prostu pobierze 57-bajtowy mały plik o nazwie „pobierz” - błąd Nginx.log też niczego nie pokazuje.
rzmpl

Odpowiedzi:

13

Dowiedziałem się, co spowodowało problem: korzystałem listen 80 http2;z konfiguracji vhosta, która najwyraźniej nie działa . Po usunięciu http2 ze wspomnianej linii, teraz znowu działa normalnie!

rzmpl
źródło
Łatwo byłoby to zauważyć, gdyby było to twoje pytanie. Nie powinieneś pomijać niczego ważnego przy następnym zadawaniu pytania.
Michael Hampton
Niczego nie pominąłem. Jak powinienem to wiedzieć wcześniej? Nie musiałbym pytać, czy wiedziałem. Ale cokolwiek, załatwiłem to i to jest ważne.
rzmpl
3
Pominąłeś dowolną część konfiguracji, listen 80 http2;która według ciebie była problemem. To uniemożliwiło komukolwiek to odgadnięcie.
Michael Hampton
1
Cieszę się, że opublikowałeś to pytanie i podałeś rozwiązanie! Właśnie się z tym spotkałem i nie miałem pojęcia, co powoduje pozornie losowe pobieranie plików. Usunięcie http2z jednej strony innej niż SSL na serwerze działało!
Graham Swan
Szukałem tego wszędzie, dziękuję! Byłoby miło, gdyby NGiNX rzucił ostrzeżenie konfiguracyjne po wykryciu tego.
aecend
0

Też mam ten problem. W moim przypadku ciąg nasłuchuje 80 http2;
znajduje się w innym bloku wirtualnego hosta. Dlatego pierwotne pytanie nie pokazało problemu.

m ilhami
źródło