2010-03-27 2 views
0

로컬로 onlu를 수신하도록 서버에 PHP 프록시를 생성 할 수 있는지 궁금 해서요. PHP 게이트웨이가 공개되어 있고 모든 것을 localhost에서 수신하는 서버로 보냅니다.로컬 수은 서버에 PHP 프록시

이 서버는 mercurial의 hg serve이며 127.0.0.1에서만 수신하고 php는 인증을 수행합니다.

할 수 있다고 생각하십니까? 아무도 아이디어가 PHP에서 일반 프록시를 만들뿐만 아니라 그래서 HTTP는 작품을 얻을뿐만 아니라 HG 푸시?

나는 정식으로 수은의 repo를 호스팅 할 방법이 알고 있지만, 플러그 컴퓨터에 있고 난 더 많은 애플 리케이션을위한 많은 공간이없는 등

+1

나는 그것을 얻지 않는다. 당신이 인터넷에 노출시킬 집에서 만든 프록시를 만들기를 원하는 것처럼 들립니다 (!!). 그리고 Mercurial에 내장 된 서버를 사용하는 대신이 작업을 수행하려고합니다.이 서버는 동일한 PC에서 동시에 실행됩니다. 나는 뭔가를 놓치고 있어야합니다 ... – Nate

+0

이것은 거의 구성없이 hg 서브에 대한 인증을 아파치를 통해 추가하는 것입니다. 그것이 전혀 작동 할 수 있는지 확실하지 않습니다. – naugtur

+0

알겠습니다. 아래에 답변을 추가하겠습니다. – Nate

답변

2

hg serve을 실행할 필요가 없습니다.

대신 hgweb.cgi 또는 hgwebdir.cgi을 사용하십시오. 이것들은 Apache에서 실행될 수있는 표준 CGI 스크립트입니다. hgweb.cgi은 단일 리포지토리를 제공하고 hgwebdir.cgi은 여러 리포지토리를 제공합니다. 그들은 아파치에 특별한 모듈을 설치할 필요가 없으며, 아파치에 내장 된 모든 액세스 제어 및 인증 메커니즘을 사용할 수 있습니다.

Mercurial 위키에서 가장 좋은 참조는 PublishingRepositories이며이를 수행하는 방법을 설명하고 더 적은 설정이 필요한 ssh을 비롯한 다른 옵션을 비교합니다.

1

당신이 아파치에 PHP를 실행하는 경우 , 그러면 PHP로 원하는 것을 할 수 있습니다. hgserve에 프록시 할 수 있도록 아파치를 설정하면 (더 나은 해결책 인 wsgi이나 cgi를 실행할 수 없다고 가정하면) 설정을 완료해야합니다. 나는 apache와 hgserve가 이미 테이블에 가져 오지 않은 PHP 토큰에 추가 할 것이 있다고 생각하지 않는다.

하지만 PHP에서는 Apache의 프록시 기능을 다시 구현할 수 있습니다.하지만 상황에 따라 수은이 사용되는 RangeRequests에 대한 지원도 포함해야합니다. 효율성을 위해 RFC2616 캐싱 로직 (If-headers, Cache-Control, Expires, Last-Modified 등)을 잊지 마십시오 ...

2

PHP를 실제로 사용하려면 소켓 기능을 사용하여 원하는 네트워킹을 수행 할 수 있습니다. (http://ch.php.net/manual/en/ref.sockets.php) fsockopen을 사용하여 원하는대로 연결할 수 있습니다. 이것을 조합하여 콘솔로 실행하는 PHP 스크립트에서 사용할 수 있습니다. 반복적으로 set_time_limit을 사용하여 프록시를 계속 실행하십시오. 이 일을하려면 많은 지식과 행운이 필요합니다.

실제로 실제로는 당신이하고있는 일을 위대한 것입니다 (다른 답변 및 의견보기). 이 구성에 대한 이유가 무엇이든 그것이 잘못되었습니다.