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 
▒▒

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!


Ł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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.