Обратный прокси с SSL и кодировкой URL, изменение пути
http://etrafficcontrol.com/misc/proxy.png
У меня есть два приложения. Одним из них является сайт электронной коммерции (Drupal 7 работает на LAMP), размещенный на AWS, а другим - система контроля, которая является ASP на IIS-6, расположена внутри нашей компании и требует SSL.
В настоящее время мы миримся с ситуацией, когда наших клиентов перенаправляют на другой домен для оформления заказа - что-то вроде того, что происходит с ebay и PayPal. Но это приводит к трудностям с кодом отслеживания сайта, и покупателю кажется, что неправильно отправлять его с сайта электронной коммерции для проверки.
Основная проблема заключается в том, что мы используем кампании Google, поэтому мы хотим отслеживать переходы с рекламы на богатый контент на домен-1, но фактическая продажа происходит во время оформления заказа на домен-2.
Вместо того, чтобы отправлять посетителей с www.domain1.com/cart на domain2.com/miscX, я попытался настроить ProxyPass и ProxyPassReverse, чтобы отправлять их на www.domain1.com/shop/miscX.
App1 (drupal) находится в domain1.com/*, а материал.htaccess обходит дизайн Drupal, чтобы перехватывать все. Пути "misc" происходят из-за того, что я перенаправляю в подкаталог, а затем оттуда проксую. Когда страницы прокси рендерится, у них есть несколько жестко закодированных путей к / miscX, и без специальных условий для них во время переориентации я получаю /miscX/ (вместо /shop/miscX/, который будет следовать за прокси) и что вызывает отсутствие CSS, JS и т. д.
Примечание. Наши бизнес-клиенты могут войти непосредственно на domain2.com, поэтому я бы хотел оставить этот портал без изменений.
Ниже local-d7 - это локальный тестовый экземпляр сервера domain1. Проверка прокси-сервера показывает, что эта концепция работает с SSL.
У меня это почти работает, но кажется, что параметры в кодировке URL теряются (даже если строки запроса в порядке). Когда я представляю прокси, server2 не отображается в виде закодированных параметров (это специализированное приложение, и я не знаю, как посмотреть, что получает IIS). Когда я маршрутизирую вход в тестовый портал domain2 через apache на сервере-1 таким образом, чтобы не иметь закодированных параметров, вход в систему работает.
По сути, я пытаюсь
- обратный прокси
- изменить путь (поместите приложение, работающее в / на домен-2, и откройте его в поддиректории "/ shop" на домене-1
- поддержка SSL
- прокси сервер IIS за Apache
- попытаться не изменять сервер IIS, чтобы он мог продолжать использоваться его исходным URL-адресом domain-2.com, и
- делайте это на хост-сервере, где у меня может быть ограниченный контроль конфигурации Apache. (в настоящее время тестирование на XAMPP).
Я перепробовал все виды вещей в дополнение к тому, что здесь показано, включая rewriterules, redirects и т. Д. У меня просто нет опыта работы с mod_proxy или mod_rewrite и т. Д. Но мне кажется, что такое расположение прокси должно быть выполнимо с некоторой работой и возможно исправлением серверных SSL-сертификатов.
Совет? --Спасибо
vhosts.conf
## Redirect /misc1/ https://local-d7/shop/misc1/
## Redirect /misc2/ https://local-d7/shop/misc2/
## Redirect /misc3/ https://local-d7/shop/misc3/
## ProxyRequests Off
## ProxyPreserveHost On
## RequestHeader set Proxy-SSL true
## ProxyPass /shop/ https://www.shop.com/
## ProxyPassReverse /shop/ https://www.shop.com/
ProxyPass /shop/ https://www.domain2.com/
ProxyPassReverse /shop/ https://www.domain2.com/
ProxyPass /misc1/ https://www.domain2.com/misc1/
ProxyPassReverse /misc1/ https://www.domain2.com/misc1/
ProxyPass /misc2/ https://www.domain2.com/misc2/
ProxyPassReverse /misc2/ https://www.domain2.com/misc2/
ProxyPass /misc3/ https://www.domain2.com/misc3/
ProxyPassReverse /misc3/ https://www.domain2.com/misc3/
.htaccess
RewriteCond %{REQUEST_URI} ^/misc1/
RewriteCond %{REQUEST_URI} ^/misc2/
RewriteCond %{REQUEST_URI} ^/misc3/
RewriteRule (.*) /shop/$1