服务器运行Ubuntu 10.10,Apache 2.2.16,PHP 5.3.3-1ubuntu9.3,phpMyAdmin 3.3.7deb5build0.10.10.1。 由于这个服务器也在端口443上运行Zimbra,所以我configuration了apache来在端口81上提供SSL。到目前为止,我已经成功地在这个虚拟主机上运行了一个CMS脚本。
但是,当我访问/ phpmyadmin(使用默认别名设置)在我的自定义ssl端口并提交login表单时,我被redirect到http://vhost.domain.com:81/index.php?TOKEN=foo (注意http://而不是loginurl使用的https://)。 这会生成一个错误400错误请求,抱怨说“纯HTTP到启用SSL的服务器端口”。 然后我可以在URL中手动更改http://到https://并按预期方式使用phpmyadmin。
我很烦,花了一个小时,试图解决它,现在更恼火,我无法弄清楚。 我尝试了各种各样的东西,包括:
添加$ cfg ['PmaAbsoluteUri'] =' https: //vhost.domain.com:81/phpmyadmin / '; 到/usr/share/phpmyadmin/config.inc.php文件,但是这并没有解决问题(即使/usr/share/phpmyadmin/libraries/auth/cookie.auth.lib.php看起来应该遵守它,用它作为redirect)。
添加$ cfg ['ForceSSL'] = 1; 到相同的config.inc.php,但然后阿帕奇螺旋无限redirect。
将重写规则添加到apache的vhost-ssl conf文件中,但是当http://与正确的ssl端口81一起出现时,我无法弄清楚要使用的条件。
大量的谷歌search 。
以下是相关的Apacheconfiguration部分:
/etc/apache2/ports.conf
<IfModule mod_ssl.c> NameVirtualHost *:81 Listen 81 </IfModule>
在/ etc / apache2的/启用的站点- /虚拟主机,nonssl
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName vhost.domain.com DocumentRoot /home/xxx/sites/vhost/html RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}:81%{REQUEST_URI} </Virtualhost>
在/ etc / apache2的/启用的站点- /虚拟主机的SSL
<VirtualHost *:81> ServerAdmin webmaster@localhost ServerName vhost.domain.com DocumentRoot /home/xxx/sites/vhost/html <Directory /> Options FollowSymLinks AllowOverride None AuthType Basic AuthName "Restricted Vhost" AuthUserFile /home/xxx/sites/vhost/.users Require valid-user </Directory> <Directory /home/xxx/sites/vhost/html/> Options -Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> </VirtualHost>
/etc/apache2/conf.d/phpmyadmin.conf
Alias /phpmyadmin /usr/share/phpmyadmin
(其余的默认.conf截断。)
在Apacheconfiguration中的一切似乎工作正常 – 重写从非ssl到ssl,httpauthentication,问题只发生在我从https://vhost.domain.com:81/index提交phpmyadmin的login表单.php 。
其他configuration:
phpmyadminconfiguration是完全默认的,php.ini只对内存和超时限制做了一些小改动。 这些似乎工作正常,如上所述,另一个PHP脚本运行没有问题,一旦我login后手动input正确的架构phpmyadmin工程很好。
我正在寻找无论是我可以添加一个bandaid节省我手动inputhttps://login后的麻烦,一个真正的修复,这将使phpmyadmin的行为,因为我认为应该或一些更好的理解为什么我所需的configuration不可能。
一个老版本的phpmyadmin,我已经躺在这个/phpmyadmin/config.inc.php
$cfg['PmaAbsoluteUri'] = 'http://127.0.0.1/phpmyadmin';
您可以尝试将http更改为https (以及其他适当的值),看看是否有所作为。