2014-12-31 4 views
-1

나는 내 자신의 HTTP 서버를 작성했지만 특정 기준이 있으면 내 서버에 대한 요청을 동일한 시스템에서 실행중인 다른 서버로 리디렉션하려고합니다. 예를 들어, 모든 요청을 "/ foo/*"로 리디렉션하여 내가 실행중인 아파치 서버가 처리하도록 할 수 있습니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?네트워크 요청을 리디렉션하는 가장 좋은 방법은 무엇입니까?

내가 생각하는 유일한 방법은 다른 포트에서 아파치를 실행 한 다음 내 서버에서 로컬 호스트로 완전히 새로운 네트워크 요청을 보내는 것입니다. 1234 (아파치가 포트 1234에서 실행 중이라고 가정) 헤더와 본문을 요청한 다음 응답을 받아 내 서버가이를 클라이언트로 다시 보냅니다.

그건 마치 일종의 해커처럼 보이는 것 같아요. 그리고 이것이 모든 주요 웹 사이트에서 다루어지는 문제라고 확신합니다. 내가 들어 본 적이없는 특정 기술이나 프로토콜이 있습니까?

고맙습니다.

편집 : 그냥 명확하게하기 위해, 클라이언트는 모든이를위한 하나 개의 네트워크 요청을해야 갖는 대신 내 서버가

답변

0

HTTP는 TCP를 통해 실행하는 3xx 응답을 반환합니다. Apache 서버는 요청하지 않은 클라이언트에게 필요한 응답을 보낼 수 없습니다. 클라이언트가 HTTP 서버에 데이터를 요청 했으므로 응답을 보내야합니다. 클라이언트는 아마도 방화벽 뒤에 있기 때문에 Apache 서버는 TCP 연결을 설정할조차 수 없습니다 (들어오는 연결은 일반적으로 차단됨).

서버가 클라이언트 요청을 가져 와서 Apache 서버로 전달하고 Apache 서버에서 응답을 가져 와서 클라이언트에 전달하면 프록시 서버 (중개자) 역할을합니다. 이것은 리디렉션이 아닙니다.

이 작업을 수행하는 유일한 방법은 클라이언트가 두 가지 네트워크 요청을하는 것입니다.

관련 문제