Nginx HTTP 不工作 - 下载一个名为“下载”的文件

15 nginx

如果我使用 https 访问我的 nginx 站点,它正在工作,但是使用 http 它正在下载一个名为“下载”(没有任何扩展名)的文件,57 个字节并用记事本等打开它只会显示乱码。

这是我的虚拟主机配置:

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

}
Run Code Online (Sandbox Code Playgroud)

卷曲-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 
??
Run Code Online (Sandbox Code Playgroud)

小智 15

我发现了导致问题的原因:我listen 80 http2;在我的 vhost 配置中使用了它显然不起作用。从上述行中删除 http2 后,它现在又可以正常工作了!

  • 您省略了配置中包含“listen 80 http2;”的任何部分,您说这是问题所在。这使得其他任何人都无法弄清楚这一点。 (3认同)
  • 很高兴您发布了这个问题并遵循了您的解决方案!我刚刚遇到了这个,不知道是什么导致了看似随机的文件下载。从服务器上的一个非 SSL 站点中删除 `http2` 成功了! (2认同)
  • 我到处找这个,谢谢!如果 NGiNX 在检测到这种情况时抛出配置警告,那就太好了。 (2认同)