【问题标题】:possibility of pure php reverse proxy?纯php反向代理的可能性?
【发布时间】:2012-12-05 22:30:44
【问题描述】:

让我在这里解释一下—— 我正在使用 BOX1,我想访问 BOX2,但我想使用域来访问它(example.com),所以我的域指向 box1,现在我如何让 example.com 从 box2 获取内容而不实际重定向到box2的IP地址?

【问题讨论】:

  • 以更多信息为例。 ENTRY SERVER -> 获取请求的 url,获取访问者的位置 -> 确定转到的最佳位置 -> 显示页面
  • 可能,但我不认为这是可取的。
  • 有什么想法吗?我想到了 cURL,但后来我认为这行不通。
  • 我看不出这样会更快。您必须检测服务器 A 上的位置,然后如果 TRUE 将它们重定向到服务器 B。检测和重定向将花费更多时间,而不仅仅是在服务器 A 上加载页面。
  • 好吧,尽管如此,我还是想尝试一下,只是为了好玩。有什么想法吗?

标签: php proxy reverse


【解决方案1】:

【讨论】:

    【解决方案2】:

    我们对“反向代理”的定义似乎有所不同。我倾向于将其与负载平衡和缓存等同起来,而您只是想根据 GeoIP 查找发出 301/302 重定向。

    <?php
    $servers = array(
        'CA' => array('1.1.1.1', '2.2.2.2'),
        'US' => array('3.3.3.3', '4.4.4.4')
    );
    
    $cc = geoip_country_code_by_name( $_SERVER['REMOTE_ADDR'] );
    
    if( in_array($cc, $servers) ) {
        $server = $servers[$cc][rand(0,count($servers[$cc]))];
    } else {
        $server = '5.5.5.5';
    }
    
    header('Location: ' . $server);
    exit();
    

    【讨论】:

    • 我想屏蔽服务器 ip,而不是重定向它。例如:example.com 加载到美国服务器,然后 example.com/page2.php 仍然加载到同一服务器,但不会重定向到 IP 地址来加载它
    • @user1770015 那么在其他国家/地区拥有服务器绝对是零点充其量您将获得与用户和“代理”之间相同的网络性能,加上“代理”机器和服务器之间的网络延迟。跨度>
    • 对你来说可能是零分,但对我来说有一点。现在你知道了吗?
    • 不。不知道。我不是魔术师,所以我无法施展你需要的特定形式的魔法。
    • 可以进行 curl 调用吗?
    【解决方案3】:

    您可以在 PHP 中编写一个非常简单的反向代理。您基本上只需获取请求参数并使用 curl 或 file_get_contents 传递它们。例如:

    <?php
      $external_url = 'http://www.anotherserver.com' . $_SERVER['REQUEST_URI'] . $_REQUEST['QUERY_STRING'];
      print file_get_contents($external_url);
    ?>
    

    查看this article了解更多详情。

    【讨论】:

    • 这可能很简单,但它不包含任何类型的标头、cookie 等,很快就会被视为垃圾邮件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    • 2017-10-16
    • 1970-01-01
    • 2014-04-13
    • 1970-01-01
    相关资源
    最近更新 更多