[英]Suggestion on developing a RETS PHP Tunnel
我已经部分开发了一个房地产网站,该网站可以从RETS IDX获取房地产数据。 您可能知道RETS服务器通过http协议监听了端口6103。 由于无法连接到6103端口,我的网站部署在共享主机上。 我确实有专用服务器(允许连接到端口6103)。 我想将此专用服务器用作我的网站和RETS IDX服务器之间的中间层。 我的问题是我想开发中间层脚本,即HTTP隧道。
我的网站会将所有RETS请求发送到此隧道,同时将其发送到RETS IDX服务器,并且其响应将同时发送回网站。
port 80 port 6103
Website (shared hosting) ----------> Tunnel (Dedicated hosting) -----------> RETS Server
RETS Server也需要登录,因此会话应得到正确维护。
我想有快速/最佳的解决方案来完成这项工作。 可能通过.htaccess或流式传输php脚本,或者某些第三方脚本也可以节省一些时间。
我很想听听您的任何想法或建议。
PS:我不能将网站移到专用服务器上,因为在不久的将来,我将拥有很多服务器,而且它们的成本太高了。
我个人将使用反向代理方法。 这将允许您根据可配置的标准智能地转发请求。
Apache和nginx都具有反向代理功能(实际上,这是nginx的初衷)。 对于Apache,您需要使用mod_proxy
,而nginx具有内置功能,除非您在编译前明确禁用了该功能。
在这两个选项中,我个人更喜欢nginx,它既坚固又轻巧,完全适合特定目的。 我发现Apache麻烦一些,但是如果您已经在专用服务器上设置了Apache,则最好使用它。
使用Web服务器进行代理的美妙之处在于它们了解底层协议 。 它们将保留标题,修改Cookie(保留会话)并正确转换主机名。
在这两种情况下,配置都非常简单,Apache的配置如下所示:
<Location /proxy-location/> ProxyPass /rets http://rets-server:6103/api/path ProxyPassReverse /rets http://rets-server:6103/api/path </Location>
还有用于调整Cookie,设置超时等的选项。所有这些都可以在mod_proxy文档中找到。
您应该注意,这不能放在.htaccess
文件中。 它必须进入主服务器配置。
同样简单
location /proxy-location { proxy_pass http://rets-server:6103/api/path; }
HttpProxyModule文档中又有很多选项用于缓存,重写url,添加标头等 。
内容请参考文档。 我没有测试过这些配置中的任何一个,它们可能有点不足,因为它们来自内存+快速的Google。
确保通过代理不可达的服务器来测试您的应用程序,并确保它可以正确处理故障,因为您将引入另一个故障点。
我正在假设您能够配置自己的专用服务器。 如果不是这种情况,您的房东可能愿意帮助您。 如果没有给我留下任何评论,我将尝试并提出一个更强大的curl选项。
您可以使用curl的PHP扩展来实现。
示例代码可能是:
$url = $_GET['url'];
$ch = curl_init( $url );
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$content = curl_exec($ch);
echo $content;
显然,您必须添加保护,或者为其添加.htaccess / .htpasswrd保护。
可以在此处找到具有cookie支持等功能的更完整的代码: https : //github.com/cowboy/php-simple-proxy
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.