如何使所有域都可以访问 PHPMyAdmin?

如何使所有域都可以访问 PHPMyAdmin?

我最近在服务器上安装了 phpmyadmin 和 nginx,但我想让所有域都可以访问它,而无需将其复制到每个域的 Web 根目录。这可能吗?如果可以,怎么做?

编辑:这是我现在的配置,lain

        location /phpmyadmin/
        {
                alias /home/phpmyadmin/;
        }

        location ~ ^/phpmyadmin/(.+\.php)$
        {
                alias /home/phpmyadmin/$1;
                include fcgi.conf;
                fastcgi_pass  unix:/tmp/php-cgi.sock;
                fastcgi_index index.php;
        }

答案1

根据nginx 文档,位置不能在块内使用http。这意味着您必须为每个虚拟主机添加位置。但是,您可以将一组布局保存到单独的文件中,并使用include命令将其包含。以下是通用虚拟主机的示例:

server {
  listen 80;
  root /var/www/nginx-default;

  include /etc/nginx/global.d/*.conf;
}

你写下所有全球的*.conf位于下的单独文件中。例如,/etc/nginx/global.d您的代码可以放置在 中。/etc/nginx/global.d/phpmyadmin.conf

更新:至于您的 PHPMyAdmin 位置:您不应该为每个文件设置别名,而应该按以下方式传递 SCRIPT_FILENAME 变量:

location ~ ^/phpmyadmin/(.+\.php)$ {
    include fcgi.conf;
    fastcgi_index index.php;
    fastcgi_pass  unix:/tmp/php-cgi.sock;
    fastcgi_param SCRIPT_FILENAME /home/phpmyadmin$fastcgi_script_name;
}

请注意,您需要使用/home/phpmyadmin而不是$document_root因为别名指令不会更改文档根目录。这意味着对于我的通用虚拟主机(如上所述),请求 URLhttp://localhost/phpmyadmin/test.php将尝试执行/var/www/nginx-default/phpmyadmin/test.php,这不是预期的行为。

答案2

将您的 phpmyadmin 放在所有网站都可以访问的公共目录中,然后尝试别名

location  /phpmyadmin/ {
  alias  /path/to/phpmyadmin/;
}

location ~ ^/phpmyadmin/(.+\.php)$ {
  alias /path/to/phpmyadmin/$1;
  include /path/to/your/fastcgi.config;
  fastcgi_pass unix:/tmp/php.socket;
}

如果你不使用 unix 套接字 fastcgi,那么最后一行可能是这样的

fastcgi_pass 127.0.0.1:9000;

答案3

@Rob 您可以将日志级别更改为调试以跟踪 nginx 操作。您必须从 fcgi.conf 文件中修复 SCRIPT_FILENAME 参数,也可以在 conf 文件中进行设置。

相关内容