【问题标题】:php proxy to local mercurial serverphp代理到本地mercurial服务器
【发布时间】:2010-03-27 22:26:18
【问题描述】:

我想知道是否可以创建一个到本地监听 onlu 的服务器的 php 代理,以便 php 网关是公共的,它将所有内容定向到在 localhost 上监听的服务器。

此服务器将是 mercurial 的 hg 服务,仅在 127.0.0.1 上侦听,php 将进行身份验证。

你认为有可能吗?任何人都知道如何在 php 中制作一个通用代理,以便不仅 http get 可以工作,而且 hg push 也可以?

我知道有一些方法可以使用 auth 托管 mercurial repo,但它是在插电式计算机上,我没有太多空间来容纳更多应用程序等。

【问题讨论】:

  • 我不明白。听起来您想制作一个将暴露在 Internet 上的自制代理(!!)。而且您希望这样做,而不是使用 Mercurial 的内置服务器,您也将在同一台 PC 上同时运行该服务器。我一定是错过了什么……
  • 这只是通过 apache 将身份验证添加到 hg serve 的想法,几乎没有配置。我不确定它是否可以工作。
  • 我明白了。我将在下面添加一个答案。
  • @all 你们是对的。与设置 hg serve 代理的所有麻烦相比,设置 chi 要好得多。

标签: php proxy mercurial localhost


【解决方案1】:

您无需运行hg serve。

改为使用hgweb.cgi 或hgwebdir.cgi。这些是可以在 Apache 下运行的标准 CGI 脚本。 hgweb.cgi 服务于单个存储库,hgwebdir.cgi 服务于多个存储库。它们不需要在 Apache 上安装任何特殊模块,并且您可以使用 Apache 的所有内置访问控制和身份验证机制。

最好的参考是 Mercurial wiki 上的 PublishingRepositories,它解释了如何执行此操作并比较了其他选项,包括 ssh,这需要更少的设置。

【讨论】:

    【解决方案2】:

    如果你真的想使用 PHP,你可以使用套接字功能来做任何你想要的网络。 (http://ch.php.net/manual/en/ref.sockets.php) 你可以使用 fsockopen 连接到任何你想要的东西。您可以将其结合起来并在您通过控制台运行的 PHP 脚本中使用它。重复使用 set_time_limit 以保持代理运行。你需要大量的知识和运气才能完成这项工作。

    但实际上,您正在做的事情真的很奇怪(请参阅其他答案和 cmets)。无论您出于何种原因进行此配置,都是错误的。

    【讨论】:

      【解决方案3】:

      如果你在 apache 中运行你的 php,那么你可以用 php 做你想做的事。只需将 apache 配置为代理到 hgserve(假设您无法运行 wsgi 或 cgi,这是更好的解决方案),您就设置好了。我不认为 apache 和 hgserve 还没有在 PHP 领域添加任何东西。

      但是,是的,您可以在 PHP 中重新实现 Apache 的代理功能,但您还需要确保包含对 RangeRequests 的支持,在某些情况下,mercurial 会使用该功能。不要忘记您的 RFC2616 缓存逻辑(If-headers、Cache-Control、Expires、Last-Modified 等)以提高效率...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-29
        • 2022-12-09
        相关资源
        最近更新 更多