为什么下载我的网站而不是运行它?

时间:2019-01-21 20:27:38

标签: nginx ubuntu-18.04

我正在尝试在子域的Ubuntu 18.04上安装Wordpress。我在可用的网站上设置了Nginx文件,但是在浏览器上出现502错误,因为Wordpress使用的是.php文件类型作为索引,因此我在可用的网站列表中添加了“ index.php”。当我尝试在浏览器中访问URL时,在列表中添加“ index.php”后,它会下载一个名为子域地址的文件。

这是我在可用站点中的代码

server {
    listen 80;
    listen [::]:80;


    root /var/www/apt;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html index.php;

    server_name apt.forrum.ro;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
    }
    }

请让我知道如何解决它。

1 个答案:

答案 0 :(得分:0)

这是简化的操作,基本上Nginx使用try_files指令将文件提供给文件夹中的用户。这就是为什么您的php文件被发送给用户,然后下载而不是显示的原因,因为浏览器并不真正知道如何向用户显示PHP。

您需要做的就是告诉Nginx运行文件。如果是PHP,则可以使用FastCGI。在ubuntu上有很多指南,例如This One

安装完成后,Nginx自己Here描述了所有FastCGI指令。

他们的示例发布在这里:

location ~ [^/]\.php(/|$) {
    fastcgi_split_path_info ^(.+?\.php)(/.*)$;
    if (!-f $document_root$fastcgi_script_name) {
        return 404;
    }

    # Mitigate https://httpoxy.org/ vulnerabilities
    fastcgi_param HTTP_PROXY "";

    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;

    # include the fastcgi_param setting
    include fastcgi_params;

    # SCRIPT_FILENAME parameter is used for PHP FPM determining
    #  the script name. If it is not set in fastcgi_params file,
    # i.e. /etc/nginx/fastcgi_params or in the parent contexts,
    # please comment off following line:
    # fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
}