【发布时间】:2013-10-25 13:22:15
【问题描述】:
我们的任务是通过 apache 反向代理上的参数检查 URL 的完整性。其中一个是从其他 3 个计算得出的哈希值。如果 URL 看起来完好无损,则应该启动反向代理功能。我们的问题是 在检查回 apache 后,我们不知道如何从 php 重新路由请求,因此它将继续/重新开始处理它。
我们尝试使用 file_get_contents() 开始一个新请求,但这不能很好地处理重定向并等待超时。
最好不要在 php 中重新实现反向代理,而是让 apache 执行此操作。 我们的哈希检查如下所示:
<?php
$ss=$_SERVER['QUERY_STRING'];
parse_str($ss,$qa);
if (array_key_exists('hash', $qa)&&array_key_exists('id1', $qa)&&array_key_exists('id2', $qa)&&array_key_exists('id3', $qa)) {
$hstr=$qa['id1'].$qa['id2'].$qa['id3'];
$hash=hash_hmac('md5',$hstr, '@#$%^&**&^@ key !@^&*&T^%$');
if ($qa['hash']==$hash) {
在这里我们应该做一些事情,以便 php 将请求传递回 apache 进程队列。
提前致谢!
【问题讨论】:
-
澄清一下,一旦 PHP 检查了给定的 URL,您是否希望客户端直接访问该 URL?这可以通过
header('Location: ...');来实现,以便将客户端浏览器重定向到该 URL? -
不,不应该在没有哈希的情况下访问该服务,因此在检查后我们需要反向代理功能。
-
据我所知,没有办法执行 PHP/CGI 脚本,然后将请求传递回 Apache 以使用其代理模块进行处理。在此设置中,PHP 本身充当授权代理和反向代理。
标签: php apache http proxy reverse-proxy