O servidor está executando o Ubuntu 10.10, Apache 2.2.16, PHP 5.3.3-1ubuntu9.3, phpMyAdmin 3.3.7deb5build0.10.10.1. Como esse mesmo servidor também está executando o Zimbra na porta 443, configurei o apache para servir SSL na porta 81. Até o momento, tenho um script do CMS em execução nesse host virtual com êxito.
No entanto, quando eu acesso / phpmyadmin (configurado com o alias padrão) na minha porta ssl personalizada e envio o formulário de login, eu sou redirecionado para link (observe o http: // em vez do https: // que o URL de login estava usando). Isso gera uma Solicitação de Erro 400 queixando-se de "falar HTTP simples em uma porta de servidor ativada por SSL". Eu posso alterar manualmente o http: // para https: // no URL e usar o phpmyadmin como esperado.
Eu estava chateado o suficiente para passar uma hora tentando consertá-lo e agora ainda mais irritado que eu não consigo entender. Eu tentei várias coisas, incluindo:
-
Adicionando $ cfg ['PmaAbsoluteUri'] = ' link '; para o arquivo /usr/share/phpmyadmin/config.inc.php, mas isso não corrigiu o problema (mesmo que /usr/share/phpmyadmin/libraries/auth/cookie.auth.lib.php pareça que deve honrá-lo e usá-lo como o redirecionamento).
-
Adicionando $ cfg ['ForceSSL'] = 1; ao mesmo config.inc.php, mas as espirais do apache em um redirecionamento infinito.
-
Adicionando uma regra de reconfiguração ao arquivo conf vhost-ssl no apache, mas não consegui descobrir a condição a ser usada quando http: // estava presente junto com a porta ssl correta de: 81.
-
Muitos googling .
Aqui estão as configurações relevantes do Apache:
/etc/apache2/ports.conf
<IfModule mod_ssl.c>
NameVirtualHost *:81
Listen 81
</IfModule>
/etc/apache2/sites-enabled / vhost-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/sites-enabled / vhost-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
(O resto do padrão .conf truncado.)
Tudo na configuração do apache parece funcionar ok - a reescrita de não-ssl para ssl, a autenticação http, o problema só acontece quando eu estou enviando o formulário de login para phpmyadmin de link .
Outras configurações:
A configuração do phpmyadmin é completamente padrão e o php.ini tem apenas algumas pequenas alterações nos limites de memória e tempo limite. Estes parecem funcionar bem, como mencionado, outro script php é executado sem problemas e o phpmyadmin funciona muito bem assim que eu entro manualmente no esquema correto após o login.
Estou procurando um bandaid que eu possa adicionar para me salvar do problema de inserir manualmente o https: // após o login, uma correção real que fará o phpmyadmin se comportar como eu acho que deveria ou um entendimento maior do porquê minha configuração desejada não é possível.