问题描述
|
我有以下格式的网址(我将其写为aregex):
http://exampledomain\\.com/files/.+
URL是由客户端通过我的代理服务器请求的。
我将自定义授权标头注入此请求。
没问题,我可以在Apache中使用mod_proxy和mod_headers做到这一点。
但是,此网址将302重定向到另一个源,该源最终应到达客户端。
此其他网址是受SSL保护的,看起来像:
https://example.+\\.exampledomain.\\com/files/.+/.+
它需要与另一个相同的授权标头。但是因为它的hTTPS,所以我不能简单地使用mod标头注入它。
因此,我的计划是建立一个反向代理,用于请求带有授权标头的第一个HTTP URL。后面是一个脚本,该脚本获取请求,解析出第二个HTTPS URL,并使用自定义授权标头下载源,并将接收到的文件(字节和http标头)传递给客户端。
我熟悉Apache2和PHP,因此最好坚持使用eseese。但这不是必需的。
只是为了澄清,我们在这里谈论的是Rapidshare链接。我公司在那里有备份文件和存储,因为它是最便宜的云托管。有些作业服务器需要提取文件,但是我无法在它们上配置用户/密码。因此,代理服务器应添加高级身份验证信息。
我想到了类似的东西:
proxy.php-使用反向代理请求此文件,并由网络服务器提供
此代理php由htaccess重写规则和http:// one-or-my-domoains / request-uri-from-the-original-request上的Revery代理写入(在Apache中生成)
$url = \"http://example.com/\".$_SERVER[\"REQUEST_URI\"];
$opts = array(
\'http\'=>array(
\'header\'=>\"Cookie: myauthvalue=example\\r\\n\"
)
);
$context = stream_context_create($opts);
stream_context_set_default($context);
$http_content = get_headers($url,1);
$ssl_location = $http_content[\'Location\'];
$fp = fsockopen(\"ssl://\".parse_url($ssl_location,PHP_URL_HOST),443,$errno,$errstr,30);
if (!$fp) {
echo \"$errstr ($errno)<br />\\n\";
} else {
$out = \"GET \".parse_url($PHP_URL_PATH,PHP_URL_HOST).\" HTTP/1.1\\r\\n\";
$out .= \"Host: \".parse_url($ssl_location,PHP_URL_HOST).\"\\r\\n\";
$out .= \"Cookie: myauthorization=something\";
fwrite($fp,$out);
while (!feof($fp)) {
echo fgets($fp,128);
}
fclose($fp);
}
因此,这基本上应该将ssl下载传递给用户启动的标准http连接,而不是重定向。
我现在的问题是:这行得通吗?我错过了什么?有什么要注意的地方吗?
我认为这将是一个合理的麻烦,包括反向代理设置和所有其他麻烦。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)