本地mercurial服务器的php代理

本地mercurial服务器的php代理,php,proxy,mercurial,localhost,Php,Proxy,Mercurial,Localhost,我想知道是否有可能创建一个php代理到一个只在本地侦听U的服务器,以便php网关是公共的,并且它将所有内容都指向在本地主机上侦听的服务器 该服务器将是mercurial的hg服务,只在127.0.0.1上侦听,php将进行身份验证 你认为有可能吗?有人知道如何在php中创建一个通用代理,这样不仅http get可以工作,而且hg push也可以工作吗 我知道有很多方法可以通过auth托管mercurial repo,但它是在一台插入式计算机上,我没有足够的空间来安装更多的应用程序等。如果你在ap

我想知道是否有可能创建一个php代理到一个只在本地侦听U的服务器,以便php网关是公共的,并且它将所有内容都指向在本地主机上侦听的服务器

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

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


我知道有很多方法可以通过auth托管mercurial repo,但它是在一台插入式计算机上,我没有足够的空间来安装更多的应用程序等。

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


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

如果您在apache中运行php,那么您可能可以使用php做您想做的事情。只需将apache配置为代理到hgserve(假设您不能运行wsgi或cgi,这是更好的解决方案),就可以了。我不认为有什么东西可以添加到PHP的土地,apache和hgserve还没有带来的表


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

您不需要运行
hgserve

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


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

您不需要运行
hg-serve

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


最好的参考资料是Mercurial wiki,它解释了如何做到这一点,还比较了其他选项,包括
ssh
,它需要更少的设置。

如果你真的想使用PHP,你可以使用套接字功能来做任何你想要的联网工作。()并且您可以使用fsockopen连接到任何您想要的内容。您可以将其组合起来,并在由控制台运行的PHP脚本中使用它。反复使用set_time_limit以保持代理运行。你需要很多的知识和运气来完成这件事


但实际上你所做的真的很奇怪(见其他答案和评论)。无论您出于什么原因进行此配置,它都是错误的。

如果您真的想使用PHP,您可以使用套接字功能来完成您想要的任何联网操作。()并且您可以使用fsockopen连接到任何您想要的内容。您可以将其组合起来,并在由控制台运行的PHP脚本中使用它。反复使用set_time_limit以保持代理运行。你需要很多的知识和运气来完成这件事


但实际上你所做的真的很奇怪(见其他答案和评论)。无论您对此配置有什么原因,它都是错误的。

我不明白。听起来好像你想制作一个自制的代理,你将向互联网公开(!!)。您希望这样做,而不是使用Mercurial的内置服务器,该服务器也将在同一台PC上同时运行。我肯定遗漏了什么……这只是通过apache将身份验证添加到几乎没有配置的hg服务的想法。我不确定它是否能起作用,我明白了。我将在下面添加一个答案。@你们都是对的。设置chi比设置hg serve的代理麻烦多了,我不明白。听起来好像你想制作一个自制的代理,你将向互联网公开(!!)。您希望这样做,而不是使用Mercurial的内置服务器,该服务器也将在同一台PC上同时运行。我肯定遗漏了什么……这只是通过apache将身份验证添加到几乎没有配置的hg服务的想法。我不确定它是否能起作用,我明白了。我将在下面添加一个答案。@你们都是对的。设置chi要比设置hg服务的代理麻烦多了。