0

我不确定要考虑什么或原因,所以如果标题具有误导性,我很抱歉。

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

但是,当我尝试通过位于http://example.com/install/install.php的安装脚本安装 vbulletin 时,该文件只会下载。我对这个域的 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 文件的下载,然后实际为另一个会话提供动态内容。我不希望某些随机用户意外下载任何文件。

4

1 回答 1

0

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

尝试:

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $document_root
于 2012-10-12T15:07:24.963 回答