nginx正在提供下载而不是php页面

时间:2015-12-04 01:02:53

标签: php nginx ubuntu-14.04

我今天将nginx从1.8.0升级到1.9.7,并且不得不更改几行以使网站再次运行。现在它适用于ssl(443)但不适用于http(80)。我不得不将fastcgi_params更改为fastcgi.conf。

当我通过cloudflare尝试网站时,它表示与我的服务器没有任何关联。直接连接我得到一个下载的文件。看起来像是一个未在浏览器中解压缩的压缩文件。这是标题。

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:{hidden}
Host:{Hidden}
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36

浏览器或服务器上没有错误。检查了nginx和php-fpm日志。

还有什么我可以尝试的吗?

附加信息:我使用easyengine为此服务器供电,但我使用的是nginx主线分支。

更新:清除nginx并重新安装后,我现在可以访问其标准http(80)端口上的所有站点。我所拥有的一个ssl站点无法通过其https(443)连接访问。当我这样做时,下载php索引文件。所有其他页面都通过SSL工作,而不是索引页面。它是一个带有漂亮网址的wordpress网站。所有页面实际上都是index.php文件。但这只发生在主页上。 80和443 ssl的listen指令位于同一虚拟主机部分。

2 个答案:

答案 0 :(得分:5)

该问题与HTTP2模式有关。从listen行中删除http2可以解决问题。

server {
listen 80 http2;
listen 443 ssl http2;

更改为:

server {
listen 80;
listen 443 ssl http2;

HTTP2通常仅适用于ssl。在非ssl listen上启用它会导致错误。一切正常,并且与ssl上的http2非常相似。

答案 1 :(得分:0)

您需要编辑/ etc / nginx / sites-enabled / default并在默认文件中添加此代码以在Nginx Server上执行php文件

server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;

root /usr/share/nginx/html;
index index.php index.html index.htm;

location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

}

如果您想了解更多信息,请参阅以下链接:click here