Запуск 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 у меня есть конфигурация apache, которая выглядит так:
<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.
В корневом каталоге http (порт 80) у меня есть файл .htaccess, который выглядит так:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Чтобы все это перенаправить на SSL.
Все файлы PHPMyAdmin находятся в каталоге SSL.
Я предлагаю настроить ваш виртуальный хост на порт 80 и 443. PHPMyAdmin сам по себе является просто сценарием php, он не форсирует какой-либо порт. Все дело в том, как настроен ваш веб-сервер / vhosts.
Поскольку браузеры обычно не перенаправляют с порта 80 на порт 443, это может быть первая страница, возвращаемая phpmyadmin, которая вызывает изменение. Взгляните на свою конфигурацию phpmyadmin, чтобы увидеть, какие различия возникают с:
$ cfg ['ForceSSL'] логический
Следует ли принудительно использовать https при доступе к phpMyAdmin.
Согласно документация, по умолчанию он включен, но, поскольку у вас работает mod_rewrite, может произойти «отключение?»
И кажется, что в наши дни все указывают на включение положения для Microsoft IE, например:
SetEnvIf User-Agent ".MSIE."nokeepalive ssl-unclean-shutdown"
Может ли использование пакетов OpenBSD Apache 2.0.x иметь для вас значение?
Кажется, что ваша конфигурация Ubuntu будет использовать Apache 2.0, и вы переместили свою систему (и конфигурации) на конфигурацию OpenBSD по умолчанию с использованием Apache 1.3.x
Я думаю, вам нужно хотя бы взглянуть на php_admin_value, показанный WerkkreW.
КОГДА простые вещи не работают, мы всегда можем увеличить LogLevel data и посмотрите на результаты оттуда. Шумно, но всегда вариант.
Включить SSLOptions StdEnvVars в Конфигурация Apache
StdEnvVars Если этот параметр включен, создается стандартный набор связанных с SSL переменных среды CGI / SSI. По умолчанию это отключено из соображений производительности, поскольку этап извлечения информации - довольно дорогостоящая операция. Поэтому обычно этот параметр включается только для запросов CGI и SSI.