Назад | Перейти на главную страницу

HTTP -> Перенаправление HTTPS с помощью httpd OpenBSD

Запуск 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>

[РЕДАКТИРОВАТЬ 2]

Я отключил правило перезаписи, и все работает как шарм: / Не уверен, что с этим делать, поскольку то же правило перезаписи работает и в другом месте.

В моей настройке 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, чтобы увидеть, какие различия возникают с:

  • config.inc.php

    $ 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.