Запуск OpenBSD 4.4-stable со встроенным демоном httpd и PHP5, который был перемещен из сервера Ubuntu 8.04.Поскольку перемещение phpMyAdmin, кажется, время от времени генерирует следующую ошибку (а иногда и все время, например, при входе в систему):
Bad Request
Your browser sent a request that this server could not understand.
Reason: You're speaking plain HTTP to an SSL-enabled server port.
Instead use the HTTPS scheme to access this URL, please.
Адрес для phpMyAdmin находится под URL-адресом https: //, и когда возникает эта ошибка, phpMyAdmin пытается используйте http://domain.com:443/ , что явно не сработает.
У меня также есть правило mod_rewrite, чтобы всегда принудительно использовать HTTPS, но поскольку браузер форсирует порт 443, он никогда не запускается.
Есть идеи, как это исправить?
Вот мои директивы vhost, так как они были запрошены:
<VirtualHost *:80>
DocumentRoot /var/www/htdocs
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /var/www/htdocs
ErrorLog logs/error_log
TransferLog logs/access_log
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
</VirtualHost>
Я отключил правило перезаписи, и все работает как шарм: / Не уверен, что с этим делать, так как то же правило перезаписи работает и в другом месте.
В моей установке PHPMyAdmin у меня есть апачская конфигурация, которая похожа на это:
<VirtualHost 72.233.89.20:80>
ServerName mysql
ServerAlias mysql.*
UseCanonicalName Off
DocumentRoot /var/www/phpmyadmin/html/
DirectoryIndex index.html index.htm index.php
AddType application/x-httpd-php .php
php_admin_value open_basedir /var/www/phpmyadmin/
php_admin_value file_uploads 1
php_admin_value upload_tmp_dir /var/www/phpmyadmin/phptmp/
php_admin_value session.save_path /var/www/phpmyadmin/phptmp/
</VirtualHost>
#
######
# Interface for https (openssl)
######
#
<IfModule mod_ssl.c>
<VirtualHost 72.233.89.20:443>
ServerName mysql
ServerAlias mysql.*
UseCanonicalName Off
DocumentRoot /var/www/phpmyadmin/ssl
SSLEngine on
SSLCertificateFile /etc/httpd/conf/ssl/server.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl/server.key
DirectoryIndex index.html index.htm index.php
AddType application/x-httpd-php .php
php_admin_value open_basedir /var/www/phpmyadmin/
php_admin_value file_uploads 1
php_admin_value upload_tmp_dir /var/www/phpmyadmin/phptmp/
php_admin_value session.save_path /var/www/phpmyadmin/phptmp/
</VirtualHost>
</IfModule>
Отметьте, как это настраивается на порте 80 и порте 443.
В webroot http (порт 80) у меня просто есть .htaccess файл, который похож на это:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Перенаправить все это к SSL.
Все файлы PHPMyAdmin живут в каталоге SSL.
Я предлагаю настроить Ваш vhost для обслуживания и на порте 80 и на порте 443. Сам PHPMyAdmin является просто сценарием PHP, он не вызывает порта. Это - все о том, как настроены Ваши webserver/vhosts.
Так как браузеры обычно не перенаправляют от порта 80 для портирования 443, это может быть первая страница, возвращенная из phpmyadmin, это вызывает изменение. Смотрите на свою phpmyadmin конфигурацию для наблюдения то, с чем происходят различия:
$cfg ['ForceSSL'] булевская переменная
Вызвать ли использование https при доступе phpMyAdmin.
Согласно документации, это идет по умолчанию, но так как у Вас есть работа mod_rewrite, могло бы быть 'разъединение?'
И кажется что в эти дни общее указание на включение условия для Microsoft IE, такой как:
Агент пользователя SetEnvIf ".MSIE". ssl-небезопасное-завершение-работы nokeepalive
Случайно был бы с помощью пакетов OpenBSD Apache 2.0.x иметь значение для Вас?
Кажется, что Ваша конфигурация Ubuntu будет использовать Apache 2.0, и Вы переместили свою систему (и конфигурации) на конфигурацию OpenBSD по умолчанию с помощью Apache 1.3.x
Я думаю, что необходимо будет, по крайней мере, посмотреть на php_admin_value, показал WerkkreW.
КОГДА простые вещи не работают, мы можем всегда увеличивать данные LogLevel и смотреть на результаты оттуда. Это является шумным, но всегда опция.
Включите SSLOptions StdEnvVars в конфигурации Apache
Создаются StdEnvVars, Когда эта опция включена, стандартный набор связанных с SSL переменных среды CGI/SSI. Это на значение по умолчанию отключено по причинам производительности, потому что шаг извлечения информации является довольно дорогой операцией. Таким образом, каждый обычно включает эту опцию для CGI, и SSI запрашивает только.