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

Apache ProxyPass с SSL

У меня есть настройка QA, которая состоит из нескольких внутренних серверов разработки и одной доступной для всех пользователей машины подготовки, которая настроена для прокси-передачи веб-трафика. Все работает нормально для запросов без SSL, но мне трудно заставить работать логику SSL. Вот несколько примеров блоков vhost.

<VirtualHost 192.168.168.101:443>
    ProxyPreserveHost On
    SSLProxyEngine On
    ProxyPass / https://192.168.168.111/
    ServerName dev1.site.com
</VirtualHost>

<VirtualHost 192.168.168.101:80>
    ProxyPreserveHost On
    ProxyPass / http://192.168.168.111/
    ServerName dev1.site.com
</VirtualHost>


<VirtualHost 192.168.168.101:443>
    ProxyPreserveHost On
    SSLProxyEngine On
    ProxyPass / https://192.168.168.111/
    ServerName dev2.site.com
</VirtualHost>

<VirtualHost 192.168.168.101:80>
    ProxyPreserveHost On
    ProxyPass / http://192.168.168.111/
    ServerName dev2.site.com
</VirtualHost>

В конце концов я вижу следующую ошибку в журнале ошибок провайдера.

[Fri Jan 28 12:50:59 2011] [warn] [client 1.2.3.4] proxy: no HTTP 0.9 request (with no host line) on incoming request and preserve host set forcing hostname to be dev1.site.com for uri /

А также следующую запись в журнале доступа целевой машины QA.

192.168.168.101 - - [22/Feb/2011:08:34:56 -0600] "\x16\x03\x01 / HTTP/1.1" 301 326 "-" "-"

Завершено ли определение virtualHost? вы пропустили включение ssl-движка и указание ключа andcert и так далее ... Итак, я предполагаю, что есть прослушивание простого http-приемника по адресу: 443 без ssl.

У меня никогда не было этого конкретного сообщения об ошибке, но я вижу проблему в вашей настройке: у вас есть два виртуальных хоста, которые прослушивают 192.168.168.101:443.

Вы не можете этого сделать с SSL, потому что Apache не может просматривать содержимое SSL-соединения до его расшифровки, поэтому ваш второй виртуальный хост SSL dev2.site.com игнорируется.