2012-11-13 2 views
1

나는 거의 24 시간 동안 내 마음에 갇혀있는 문제가 있으며,이 순간 나는 그것을 고치는 법을 모른다.아파치 프로세스 TCP 연결을 만드는 방법?

여기에 있습니다 : 들어오는 모든 데이터를 처리하고 PHP를 사용하여 다른 클라이언트로 보내는 내 서버에 하나의 '기본'소켓을 갖고 싶습니다. 그 부분은 잘되지만, 여러 하위 도메인을 사용하여 해당 소켓에 연결하려고합니다. ex.example.com. 이 점은 소켓을 실행하지 않는 한 해당 하위 도메인에 연결할 수 없다는 것입니다. 그리고 포트를 채우는 것만으로도이를 막으려 고합니다.

가장 좋은 해결책은 들어오는 TCP 요청을 처리하고 연결하려는 도메인의 데이터를 저장 한 다음 클라이언트를 수신 한 데이터를 처리하고 클라이언트가 수락되면 즉시 작동하는 주 소켓으로 클라이언트를 리디렉션하는 것입니다 .

솔직히, 나는 이것을 어떻게하는지 모른다. 몇 시간 동안 검색했지만, Stackoverflow에 가까운 것이 있습니다. Apache - handling TCP connections, but not HTTP requests

그러나이 스크립트에서는 데이터를 저장할 수 없습니다 (사용중인 도메인) 그리고 그것을 메인 소켓으로 보낸다.

이것이 아파치에 의해 수행 될 수 있는지 또는 가능한지 또는 다른 해결 방법이 있을지 모르겠다.

감사합니다.

+0

나는 당신이하고 싶은 일에 대해 혼란스러워합니다. 소켓은 "하위 도메인에서 실행"하지 않습니다. 도메인 이름은 IP에 매핑됩니다. HTTP 요청을 처리 할 때 Apache는 'Host'HTTP/1.1 헤더를 사용하여 하나의 가상 호스트에 다른 호스트를 알립니다. 원시 TCP를 사용하면 각 하위 도메인에 별도의 IP를 사용하거나 사용자 정의 프로토콜에서 원하는 하위 도메인 이름을 전송해야합니다. –

답변

0

하위 도메인에 대해 혼란스러워합니다. 소켓, TCP 및 IP는 모두 을 알지 못합니다. 이름은입니다. 네트워킹 스택이 수 년 동안 사용되기 전까지는 DNS가 발명되지 않았습니다.

따라서 컴퓨터의 단일 "소켓"포트에서 원하는 수의 도메인을 지정할 수 있습니다.

아파치는 들어오는 연결 (1) 또는 HTTP/1.1 "호스트"헤더 (2)의 대상 IP 주소를 기반으로 들어오는 요청을 다른 "웹 공간"(즉 가상 호스트)으로 라우팅 할 수 있습니다. 전자는 가상 호스트를 사용하는 방법 이었지만 이제는 거의 모든 사람이 가상 호스트를 사용합니다.

(1) 시스템은 단일 네트워크 카드로도 여러 개의 IP 주소를 가질 수 있지만 포트는 해당 시스템의 특정 프로토콜에 고유합니다. 다른 도메인을 다른 주소로 지정하고 웹 서버에서 역 매핑을 정의하면 요청 시작 방법을 알 수 있습니다.

(2) "호스트"의 값은 브라우저에 제공된 DNS 이름입니다. 이 값은 웹 서버에 명시 적으로 전달되므로 해당 서버는 # 1과 같은 트릭을 사용하지 않아도됩니다.

관련 문제