首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于开发RETS PHP隧道的建议

关于开发RETS PHP隧道的建议
EN

Stack Overflow用户
提问于 2012-07-19 20:57:39
回答 2查看 871关注 0票数 0

我已经部分开发了一个从RETS IDX获取属性数据的属性网站。您可能知道RETS服务器通过http协议监听端口6103。我的网站部署在共享主机上,由于无法连接到6103端口。我有一个专用的服务器(它允许连接到端口6103)。我想使用这个专用服务器作为我的网站和RETS IDX服务器之间的中间层。我的问题是我想要开发中间层脚本,即HTTP隧道。

我的网站将发送所有RETS请求到此隧道,同时将其发送到RETS IDX服务器,其响应将在同一时刻发送回网站。

代码语言:javascript
复制
                         port 80                                 port 6103

Website (shared hosting) ----------> Tunnel (Dedicated hosting)  -----------> RETS Server

RETS Server还需要登录,因此应该正确维护会话。

我想要有快速/最佳的解决方案来完成这项工作。可能是通过.htaccess或流式php脚本,也可能是一些第三方脚本也可以节省我的一些时间。

我很乐意听到你的任何想法或建议。

附言:我不能移动我的网站到一个专用的服务器,因为在不久的将来,我将有大量的他们,他们将花费太多。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-24 17:08:59

我个人倾向于使用Reverse Proxy方法。这将允许您基于可配置的标准智能地转发请求。

Apache和nginx都有反向代理功能(事实上这是nginx的初衷)。对于Apache,您需要使用mod_proxy,而nginx具有内置的功能,除非您在编译前显式禁用它。

在这两个选项中,我个人更喜欢nginx,它是健壮和轻量级的,完全适合用途。我发现Apache比较麻烦,但是如果您已经在专用服务器上设置了Apache,那么您可能更喜欢使用Apache。

使用web服务器代理的美妙之处在于,它们理解底层协议。它们将保留报头,修改cookie(保留会话),并正确转换主机名。

Apache配置

在这两种情况下,配置都非常简单,Apache配置如下所示:

代码语言:javascript
复制
<Location /proxy-location/>
    ProxyPass /rets http://rets-server:6103/api/path
    ProxyPassReverse /rets http://rets-server:6103/api/path
</Location>

还有调整cookie、设置超时等选项,所有这些都可以在mod_proxy documentation中找到

您应该注意到,此不能在.htaccess文件中 go。它必须在主服务器配置中。

nginx配置

同样简单

代码语言:javascript
复制
location /proxy-location {
    proxy_pass        http://rets-server:6103/api/path;
}

同样,HttpProxyModule documentation中有大量用于缓存、重写urls、添加头等的选项。

请务必查阅文档。我还没有测试过这两种配置,它们可能有点不对劲,因为它们来自memory +一个快速的google。

确保通过代理到无法访问的服务器来测试您的应用程序,并确保它正确处理故障,因为您正在引入另一个故障点。

我的工作假设您能够配置自己的专用服务器。如果不是这样,你的主人可能会愿意帮助你。如果没有,请给我留言,我会试着想出一个更健壮的卷曲选项。

票数 3
EN

Stack Overflow用户

发布于 2012-07-23 01:45:53

您可以使用curl的PHP扩展来实现这一点。

示例代码可以是:

代码语言:javascript
复制
$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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11561381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档