it-swarm.com.ru

Прокси с помощью SSL

У меня есть хост Linux с Apache и хост Windows с IIS. У меня есть домен, который указывает на хост Linux, и мне нужно пересылать (прокси) запросы на него в IIS; Таким образом, у меня есть следующее определение виртуального хоста в Apache (которое прекрасно работает):

<VirtualHost 192.168.0.2:80>
    ServerName www.acme.com
    DocumentRoot /var/www/acme.com

    RewriteEngine On
    RewriteOptions Inherit
    RewriteRule ^/(.*) http://win.acme.com/$1 [P]
</VirtualHost>

теперь я хочу добавить поддержку SSL; определение становится:

<VirtualHost 192.168.0.2:443>
    ServerName www.acme.com
    DocumentRoot /var/www/acme.com
    GnuTLSEnable On
    GnuTLSPriorities NORMAL:%COMPAT
    GnuTLSCertificateFile /var/www/ssl/www.acme.com.crt
    GnuTLSKeyFile /var/www/ssl/www.acme.com.key

    RewriteEngine On
    RewriteOptions Inherit
    RewriteRule ^/(.*) https://win.acme.com/$1 [P]
</VirtualHost>

У меня есть действительные и доверенные сертификаты на обоих веб-серверах, и если я посещаю https://win.acme.com, все хорошо, однако, когда я посещаю https://www.acme.com, я получаю сообщение 500 Internal Server Error. Просмотр журналов ошибок показывает:

[Ср. 20 июля, 08:35:34 2011] [ошибка] [клиент 76.168.166.70] SSL-прокси запрошено для www.wileybits.com:80, но не включено [Подсказка: SSLProxyEngine] [среда, 20 июля 08:35:34 2011] [ошибка] прокси: HTTPS: не удалось включить поддержку ssl для 74.166.186.70:443 (win.acme.com)

обратите внимание, что запрос прокси-сервера, кажется, для неправильного домена (wileybits) ... домен, который он показывает, также размещается на моем сервере Apache, но я не понимаю, почему он отображается в журналах acme.com (наоборот) Поиск DNS возможно?)

в любом случае, чего мне не хватает?

заранее спасибо - ekkis

постскриптум Имена хостов и адреса были изменены, чтобы защитить невинных :)

* Обновление *

с:

RewriteRule ^/(.*) https://win.acme.com/$1 [R,L]

кажется, что он работает нормально, но, конечно, имя хоста Windows становится видимым, что не приемлемо в моем сценарии

Я также попробовал (вместо mod_rewrite):

ProxyRequests Off
ProxyPass / https://win.acme.com/

но та же ошибка

41
ekkis

разобрался ... видимо я могу это сделать

SSLProxyEngine On
RequestHeader set Front-End-Https "On"
ProxyPass / https://win.acme.com/
ProxyPassReverse / https://win.acme.com/
CacheDisable *

и это работает просто отлично!

[решение пришло из сообщения Майкага на 3cx.org]

80
ekkis

Не уверен, что причина этой ошибки, но вы можете попробовать использовать Squid или Varnish для достижения этой цели. Ранее я использовал Squid для прокси защищенного экземпляра Windows IIS без проблем.

0
Will Bonde