我遇到了以下情况。客户在端口 80 上提供 soap 服务。尚不清楚他们的客户究竟如何访问该服务,但可以假设他们在脚本中对 uri 进行了硬编码。目前,我们正在为我的客户开发一个新网站,该网站将在当前域上运行。soap 服务将移至子域。由于他们不想因为 soap 服务的域更改而打扰他们的客户,因此我被要求将所有 soap 请求转发到子域上的服务器。
我现在的问题是,这能做到吗?怎么做?我在 Ubuntu 14.04 上运行 Nginx 网络服务器。我们可以只转发这个端点吗?https://www.domain.nl/services/soap到https://subdomain.domain.nl/services/soap或者我们需要使用 iptables 吗?如果使用 iptables,我们如何将 soap 请求与常规 web 请求区分开?
答案1
您不希望301
客户端转到新的适当位置,因为从技术上讲,这是重大更改。现有客户端可能不知道如何遵循重定向301
,或者如果响应不是,它们可能会返回错误200
。您正在改变一个基本假设,因此结果是不可预测且有风险的。
更好的方法是创建一个对客户端不可见的反向代理。您将检查 URL 并匹配^/services/soap
对新 SOAP 端点的代理请求。有很多记录良好的方法可以使用 NGINX 以及 HAProxy 或 Apache 来实现这一点。