我需要在不同于标准 443 的端口上与 httpS SOAP 服务器进行通信。由于限制,客户端应用程序无法使用不同于 HTTP 和 HTTPS 标准端口的端口
我如何设置运行 Apache 的 Linux 服务器,以便将来自 soap.domain.com 的所有请求都隧道传输到https://soapserver.otherdomain.com:1234/Service.asmx?
答案1
反向代理将会帮助你。
您可以使用 apache mod_proxy 来帮助您。通过使用 mod_proxy,apache 将在标准 HTTP/HTTPS 端口上接收请求,然后在内部将其重定向到 SOAP 服务器。
http://httpd.apache.org/docs/2.0/mod/mod_proxy.html
阅读有关反向代理的内容。这将帮助您更好地理解。
答案2
我会使用反向代理,例如哈普罗西或者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;
}
是的,你可以使用自签名证书
答案3
我不清楚你需要在哪里做这件事 - 在 SOAP 客户端?在 SOAP 服务器上?还是在两者之间?无论如何,方法都是一样的 - 有多种方法可以做到这一点。
- 您可以使用 iptables 重写数据包地址。
- 运行数据包代理守护程序(例如 netcat)以监听端口 443 并连接到端口 XXX
- 配置 [x]inetd 监听 443 端口,并运行通用套接字客户端(例如 netcat)连接到 XXX 端口
第一种方法允许您保留服务器看到的客户端地址。