Nginx配置Yii和phpMyAdmin虚拟主机
在我们部署项目时经常需要用Nginx,同时需要支持url重写,还得安装一个phpmyadmin,这时候问题就来了。如何让phpmyadmin不在web根目录下?以下是配置文件样例:
?
server { listen 80; server_name dmis.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_pass unix:/tmp/php-cgi.sock; include fastcgi_params; fastcgi_param DOCUMENT_ROOT $document_root/phpmyadmin; #fastcgi_pass 127.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_pass unix:/tmp/php-cgi.sock; include fastcgi_params; #fastcgi_pass 127.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_page 404 = /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';
?搞定。?
?
?
?