【发布时间】:2014-02-06 12:47:03
【问题描述】:
我有 2 台服务器。主服务器充当 server2 的 Web 服务,并且 server2 正在与客户端通信。
Server2 运行一个 php 脚本,从客户端获取一些数据,然后将其发送到主服务器,然后读取主服务器上某个页面的内容(根据客户端的数据生成),并且还读取从主服务器返回的 http 标头以获取 cookie 值。
服务器 2 代码:
some code ...
$postdata = http_build_query(
array(
'var1' => 'value1',
'var2' => $_POST["var2"],
'var3' => $_POST["var3"]
)
);
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
)
);
$context = stream_context_create($opts);
file_get_contents("http://www.mainserver.com", false, $context);
$cookieContent = getCookieContent($http_response_header);
SetCookie('myCookie', $cookieContent, $loginTime, '/', $url, false);
more code ....
主服务器不运行 php 脚本,但它按预期写入 cookie 值。 cookie 值是唯一的,是根据 server2 传递的客户端详细信息生成的。
所以,基本上,server2 充当“代理”(或反向代理),应该为每个客户端设置他从主服务器获取的唯一 cookie 值。
我的问题是:
我的逻辑有效吗?我知道它适用于 1 个客户端,但是当多个客户端访问 server2 上的同一脚本时会发生什么?主服务器如何知道将具有正确唯一值的答案返回给 server2 上正确的 php 实例?
换句话说,客户端是否有机会向 server2 发送请求,而 server2 将返回一个具有唯一值的答案,该值属于不同的客户端?
【问题讨论】:
-
看起来您的 server2 正在充当 reverse-proxy。我想知道你为什么要从头开始构建一个。您是否查看过像 Apache traffic server 这样的现有解决方案?
-
因为 server2 也做其他事情,也使用自己的数据库,而不仅仅是在客户端和主服务器之间传递信息。
-
好吧,如果不是全部的话,大多数反向代理也是如此 :) 我在想也许你可以使用现有的软件作为基础,看看你是否可以在它之上实现你的特定功能。
-
好吧,我不需要比我已经拥有的更多,我只需要了解事情是如何工作的,以确保我的代码能够完成我想要它做的事情。
-
你的逻辑没问题,但在我能想到的任何情况下都不理想。 “主服务器”是否接受来自任何形式的常规 HTTP 客户端的连接,还是所有请求都来自“服务器 2”和类似主机?您能否更具体地了解“服务器 2”和“主服务器”上正在执行的任务?跨度>
标签: php http proxy parallel-processing multiple-instances