我最近在我的服务器上安装了phpmyadmin和nginx,但是我想让它可以被所有的域访问,而不需要复制到每个域的web根目录。 这可能吗? 如果是的话,怎么样?
编辑:这是什么在我的configuration现在,躺在
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; }
根据nginx的文档 ,位置不能在http块中使用。 这意味着您必须为每个虚拟主机添加位置。 但是,您可以将一大堆布局保存到单独的文件中,并使用include命令将其包含include 。 这是一个通用的虚拟主机的例子:
server { listen 80; root /var/www/nginx-default; include /etc/nginx/global.d/*.conf; }
你可以在/etc/nginx/global.d下的所有全局位置文件中写一个单独的*.conf文件。 例如,您的代码可以放在/etc/nginx/global.d/phpmyadmin.conf 。
更新:至于你的PHPMyAdmin的位置:而不是别名每个文件你应该通过SCRIPT_FILENAMEvariables以下列方式:
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因为别名指令不会更改文档根目录。 这意味着对于我的通用虚拟主机(如上)请求URL http://localhost/phpmyadmin/test.php将尝试执行/var/www/nginx-default/phpmyadmin/test.php这不是预期的行为。
把你的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 socket fastcgi,那么最后一行可能是这样的
fastcgi_pass 127.0.0.1:9000;
@Rob你可以改变你的日志级别进行debugging,以遵循nginx操作。 您必须从fcgi.conf文件修复SCRIPT_FILENAME参数,或者您可以将其设置在您的conf文件中。