chenqb 发表于 2016-12-27 07:06:21

Nginx配置Yii和phpMyAdmin虚拟主机

  在我们部署项目时经常需要用Nginx,同时需要支持url重写,还得安装一个phpmyadmin,这时候问题就来了。如何让phpmyadmin不在web根目录下?以下是配置文件样例:

server
{
listen      80;
server_namedmis.sangou.net;
index index.html index.htm index.php;
root/opt/www/dmis/;
location /phpmyadmin {               
root /opt/www/;               
index index.php;      
}
location ~ ^/phpmyadmin/.*\.(php|php5)$ {               
root /opt/www/;               
fastcgi_passunix:/tmp/php-cgi.sock;
include fastcgi_params;
fastcgi_paramDOCUMENT_ROOT$document_root/phpmyadmin;
#fastcgi_pass127.0.0.1:9000;
fastcgi_index index.php;
set $path_info $request_uri;
if ($request_uri ~ "^(.*)(\?.*)$") {
set $path_info $1;
}
fastcgi_param PATH_INFO $path_info;   
}
location / {
if (!-e $request_filename){
rewrite (.*) /index.php last;
}
}
location ~ .*\.php?$
{
fastcgi_passunix:/tmp/php-cgi.sock;
include fastcgi_params;
#fastcgi_pass127.0.0.1:9000;
fastcgi_index index.php;
set $path_info $request_uri;
if ($request_uri ~ "^(.*)(\?.*)$") {
set $path_info $1;
}
fastcgi_param PATH_INFO $path_info;
}
#error_page404=/404.gif;
}

  可以看到里面Phpmyadmin虚拟目录的设置,其顺序是很有讲究的。然后就是支持 yii 的url 重写规则,我们将其用 location / 进行限定。
  接下来你登录pma,会发现被重定向到了根目录,这是怎么回事?经过一番查找,发现pma中有个设置 $cfg['PmaAbsoluteUri'] = ''; 默认是自动探测的,这里就有问题了。但修改这个没有用。我们就来硬的把,直接修改程序文件 libraries/auth/cookie.auth.lib.php, 找到:

// URL where to go:
$redirect_url = $cfg['PmaAbsoluteUri'] . 'index.php';
  修改为

// URL where to go:
$redirect_url = '/phpmyadmin/index.php';
  搞定。 
页: [1]
查看完整版本: Nginx配置Yii和phpMyAdmin虚拟主机