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';
?搞定。?
?
?
?
1 樓 uiexp 2011-08-23