启用php后的Nginx奇怪缓存或其他什么



我真的不确定该怎么考虑,也不确定原因,所以如果标题有误导性,我很抱歉。

我只是第一次安装Nginx,出于好奇,我试着看看是否可以让一些流行的论坛软件正常工作。我第一次尝试安装Vbulletin 4,因为这是我主持的一个社区所使用的。PHP由PHP-fpm处理。我可以获得任何自定义页面来显示我刚刚写的一些简单的php echo,带有任何文件名或目录http://example.com/test/test.phphttp://example.com/test.php

然而,当我尝试通过位于的安装脚本安装vbulletin时http://example.com/install/install.php,文件将直接下载。我反复检查了这个域的Nginx配置,一切似乎都应该正常。

下载install.php几次后,我决定尝试在Chrome隐身窗口中访问该页面。瞧,install.php页面不再下载,安装程序提示我输入我的客户id。然后我回到我的主Chrome(不是隐姓埋名)窗口,尝试再次访问安装页面,install.php再次下载!

这是我当时使用的配置:

server {
listen       ip:80;
server_name  my.domain.com;
location / {
root /usr/share/nginx/html;
try_files $uri $uri/ /index.php;
}
location ~ .php$ {
root /usr/share/nginx/html;
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
}
}

对这个问题的原因有什么见解吗?我无法想象为什么它会为一个会话提供php文件的下载,然后为另一个会话实际提供动态内容。我不希望任何文件被随机用户意外下载。

您的fastcgi_params看起来有点不对劲。您已经将PATH_INFO设置为脚本名称。

尝试:

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $document_root

最新更新