Мне нужно связаться с сервером httpS SOAP через порт, отличный от стандартного 443. Клиентское приложение не работает (из-за ограничений) с портами, отличными от стандартных для HTTP и HTTPS.
Как я могу настроить свой Linux-сервер, на котором запущен Apache, для туннелирования всех этих запросов, поступающих на soap.domain.com, на https://soapserver.otherdomain.com:1234/Service.asmx ?
Я бы использовал обратный прокси, например 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? где-то между? В любом случае подход один и тот же - есть несколько способов сделать это.
Первый метод позволит вам сохранить адрес клиента, видимый сервером.