Nginx HTTP không hoạt động - tải xuống một tệp có tên là Tải xuống Tải xuống


11

Nếu tôi truy cập trang web nginx của mình với https thì nó đang hoạt động, nhưng với http, nó đang tải xuống một tệp có tên là "download" (không có phần mở rộng nào), 57 byte và mở nó bằng notepad, v.v. chỉ hiển thị những thứ vô nghĩa.

Đây là cấu hình vhost của tôi:

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;
    }

}

cuộn tròn-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 
▒▒

Cấu hình này là OK. Kiểm tra xem bạn đã khôi phục nginx, tường lửa được định cấu hình hay thứ gì khác chưa
Alexey Ten

Ngoài ra, hãy kiểm tra vớicurl -v http://domain.com
Alexey Ten

Cảm ơn bạn đã trả lời. Tôi đã khởi động lại nhiều lần (tôi đã thử thay đổi các phần của cấu hình, nhưng không có gì giúp được), tường lửa của tôi cũng ổn. Khi kiểm tra với curl tôi nhận được một phản hồi kỳ lạ: ▒▒ chỉ thế này - không hiển thị mã nguồn giống như với https.
rzmpl

phpfpm nên được chạy và chạy và socket nên tồn tại trong /run/php/php7.0-fpm.sock.
Farhan

Nó làm. PHP hoạt động - Tôi không nghĩ đó là một vấn đề PHP. Mọi thứ trên HTTPS đều hoạt động, bất kể đó có phải là php hay không. Nhưng nếu tôi gõ http: // hoặc chỉ tên miền (trong trường hợp đó nên chuyển hướng sang https) thì nó chỉ tải xuống một tệp nhỏ 57 byte có tên là "download" - Nginx error.log cũng không hiển thị gì cả.
rzmpl

Câu trả lời:


12

Tôi đã tìm ra nguyên nhân gây ra sự cố: Tôi đang sử dụng listen 80 http2;cấu hình vhost của mình mà dường như không hoạt động . Sau khi tôi xóa http2 khỏi dòng đã nói, nó hiện đang hoạt động bình thường trở lại!


Điều này sẽ dễ dàng cho mọi người phát hiện, nếu nó đã có trong câu hỏi của bạn. Bạn không nên bỏ qua bất cứ điều gì quan trọng vào lần tới khi bạn đặt câu hỏi.
Michael Hampton

Tôi đã không bỏ sót bất cứ điều gì. Làm thế nào tôi có thể biết nó trước? Sẽ không cần phải hỏi nếu tôi biết. Nhưng bất cứ điều gì, tôi đã sắp xếp nó ra và đó là những gì quan trọng.
rzmpl

3
Bạn đã bỏ qua bất kỳ phần nào trong cấu hình của bạn có chứa listen 80 http2;mà bạn nói là vấn đề. Điều đó làm cho điều này không thể cho bất cứ ai khác để tìm ra.
Michael Hampton

1
Rất vui vì bạn đã đăng câu hỏi này và làm theo giải pháp của bạn! Tôi chỉ gặp phải điều này và không biết điều gì đã gây ra việc tải xuống tệp dường như ngẫu nhiên. Xóa http2khỏi một trang web không có SSL trên máy chủ đã hoạt động!
Graham Swan

Tôi đã tìm khắp nơi cho điều này, cảm ơn bạn! Sẽ thật tuyệt nếu NGiNX sẽ đưa ra cảnh báo cấu hình khi phát hiện ra điều này.
3:32
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.