nginx 中的多个服务器块:Php 在服务器 2 上无法运行

nginx 中的多个服务器块:Php 在服务器 2 上无法运行

我的 Web 服务器上运行着一个 nginx 服务器。
我想实现以下目标:

  • example.com + www.example.com -> /my/web/dir/www
  • pma.example.com-> /my/web/dir/pma

第一点没有问题,一切正常。对于第二点,我编辑了 /etc/nginx/sites-enabled/default 并复制了现有的服务器块,为 pma.example.com 创建一个新服务器块。

server {
    listen   80;

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

    server_name example.com www.example.com;

    location / {
        try_files $uri $uri/ /index.html;
    }   

    location ~ (?U)\.php(/.*$|$) {
        gzip off;

        #^((?U).*/echo)(/?.+)$;
        fastcgi_split_path_info ^((?U).+\.php)(/.+)?$;

        include fastcgi_params;

        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        #try_files $fastcgi_script_name =404;
        if (!-e $document_root$fastcgi_script_name) {
            return 404;
        }

        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
    }
}

server {
    listen   80;

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

    server_name pma.example.com;

    location ^~ /{
        auth_basic              "Restricted Area";
        auth_basic_user_file    conf/pma_htpasswd;

        try_files $uri $uri/ /index.html;

        gzip off;

        #^((?U).*/echo)(/?.+)$;
        fastcgi_split_path_info ^((?U).+\.php)(/.+)?$;

        include fastcgi_params;

        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        #try_files $fastcgi_script_name =404;
        if (!-e $document_root$fastcgi_script_name) {
            return 404;
        }

        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
    }
}

第一个仍然运行良好,PHP 也运行良好。
第二个不工作了。

我在 pma 目录中创建了一个 index.php 文件来测试设置:

<?php
    phpinfo();
?>

不幸的是,如果我在浏览器(最新版 Chrome)中输入 pma.example.com,它只会下载文件。我对网络服务器不是很熟悉,所以我想请你帮忙。我该如何让它工作,以便在第二个服务器块上使用 PHP?我在这里做错了什么?

答案1

我按照 digitalocean.com 上的教程解决了这个问题: 如何使用 Nginx 配置单个和多个 WordPress 站点设置

我省略了 Wordpress 特定的部分,现在它可以正常工作。

相关内容