Прокси-сервер SOAP
Мне нужно связаться с сервером HTTPS SOAP через порт, отличный от стандартного 443. Клиентское приложение не работает (из-за ограничений) с портами, отличными от стандартных для HTTP и HTTPS
Как я могу настроить свой сервер Linux, на котором работает Apache, для туннелирования всех этих запросов, поступающих на soap.domain.com, на https://soapserver.otherdomain.com:1234/Service.asmx?
3 ответа
Я бы использовал обратный прокси, такой как haproxy или nginx с proxy_pass
вариант.
Оба позволят вам прокси-запросы к вышестоящим серверам, и оба позволят HTTPS к soap.domain.com и разрешить проксирование к зашифрованному вышестоящему HTTPS-серверу в вашем случае: https://soapserver.otherdomain.com:1234/Service.asmx
По моему опыту, nginx несколько проще в настройке и настройке.
Соответствующая конфигурация nginx может выглядеть следующим образом:
listen 443 ssl;
server_name soap.domain.com;
ssl_certificate soap.domain.com.crt;
ssl_certificate_key soap.domain.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass https://soapserver.otherdomain.com:1234;
}
И да, вы можете использовать самозаверяющий сертификат
Обратный прокси поможет вам.
Вы можете использовать apache mod_proxy, чтобы помочь вам. С помощью mod_proxy apache получит запрос на стандартные порты HTTP/HTTPS и затем внутренне перенаправит его на сервер SOAP.
http://httpd.apache.org/docs/2.0/mod/mod_proxy.html
Читайте на обратном прокси. Это поможет вам лучше понять.
Мне не понятно, где нужно это делать - на SOAP-клиенте? На SOAP-сервере? где то посередине? Подход один и тот же вне зависимости - есть несколько способов сделать это.
- Вы можете использовать iptables, чтобы переписать адреса пакетов.
- Запустите демон прокси пакета (например, netcat), чтобы прослушать порт 443 и подключиться к порту XXX.
- Сконфигурируйте [x]inetd для прослушивания порта 443 и запуска универсального клиента сокета (например, снова netcat), подключающегося к порту XXX
Первый способ позволит вам сохранить адрес клиента, увиденный сервером.