我今天将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指令位于同一虚拟主机部分。
答案 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