2012-05-03 4 views
10

사용자가 가입하고, 웹 페이지를 만들고, 템플릿을 사용하고, 사용자 정의 CSS를 사용하여 사용자 정의하고, 웹 페이지를 제공 할 수있는 예제 SaaS 앱을 만들고 싶습니다. 맞춤 도메인 해제Saas 앱에서 하위 도메인을 가리키는 사용자 정의 도메인을 제공하는 방법

미디어/스타일 시트/js 파일과 함께 S3/기타 CDN에 템플릿을 저장하는 것을 고려하고있었습니다. 모든 것이 기술적으로 가능하지만 (논리적 일 수있는 실용적인). 어쨌든이 경우 사용자 정의 도메인에서 웹 사이트를 제공하는 방법을 파악하는 데 어려움을 겪고 있습니까? 예를 들어, 가입 할 때 subdomain.domain.com 주소를 얻을 수 있습니다. customerdomain.com 입력 할 때, 그것은 customerdomain.domain.com로 동일한 콘텐츠를 제공하도록하지만, 그들은 어떻게 customerdomain.com 포인트 않으며, 나는 "feature"함으로써, 사용자 정의 도메인이 될 수있는 지불 기능을 갖고 싶어 URL은 또한

customerdomain.com 남아있다. 유료 사용자로만 제한하는 방법은 무엇입니까?

일반적으로 웹 사이트를 설정하고 가상 호스트 구성 파일 (Apache)에 지정하고 별칭을 지정하면 해당 별칭을 찾아 제공합니다. 이 경우 가입하는 사람마다 별도의 가상 호스트 파일을 갖고 싶지 않습니다. 대안이 있습니까? 어떻게 프로그램 할 수 있습니까? 알고 있어야 할 사항이 있습니까?

내가 본 한 가지 해결책은 서버에 와일드 카드 도메인을 제공하는 것입니다. 즉, *.domain.com과 각 사용자 정의 도메인에 대해 별도의 가상 호스트를 사용할 수는 있지만 선호하지 않을 수 있습니다.

감사합니다.

답변

6

사용자 지정 도메인은 일반적으로 CNAME DNS 레코드 (DNS 레코드의 경우 일종 심볼릭 링크)를 통해 이루어집니다. customerdomain.com이 customerdomain.domain.com의 별칭이라는 CNAME 레코드를 작성하도록 고객 (일반적으로 customerdomain.com을 관리하는 사람)에게 알립니다. 그런 다음 customerdomain.domain.com에 대한 요청을 처리하는 것과 동일한 방식으로 customerdomain.com에 대한 요청을 해석 할 자체 서버를 설정해야합니다.

하위 도메인 서비스 방법에 따라 몇 가지 방법으로 수행 할 수 있습니다.

모든 고객에 대한 가상 파일이있는 경우 클라이언트가 제공 한 사용자 지정 도메인에 대해 "ServerAlias"지시문을 추가해야합니다.

응용 프로그램 서버를 통해 엔트리 포인트를 코딩하는 경우 (예 : PHP의 "호스트"HTTP 헤더 읽기 및 그로부터 고객 이름 설정) 해당 코드를 적절히 조정하여 외부 요청을 해석해야합니다 맞춤 도메인의 자체 데이터베이스에 따라 이 경우에도 똑바로 DNS를 사용할 수 있습니다! 의 라인에

뭔가 :

if http "host" header does not end in domain.com: 
    cname = get_cname_record(http "host" header value) 
    if cname does not end in domain.com: 
     return error 404 
    else: 
     site = first part of cname 
else: 
    site = first part of http "host" header 

그런 다음 당신이 당신의 "사용자 정의 도메인 데이터베이스"로 DNS를 사용할 수 있습니다. DNS 캐시를 사용하고 있는지 확인하십시오. 이러한 요청은 매 요청마다 수행됩니다.

+0

감사의 말로 psuedocode가 솔루션을 이해하는 데 도움이되었습니다. 서버의 DNS 캐시 정보가 기본값이 아닙니까? 나는 DNS 쿼리가 OS (우분투)에 의해 캐시된다는 것을 의미한다. 그 일을 위해 뭔가 더해야합니까? – Nasir

+0

"get_cname_record"를 구현하는 방법에 따라 다릅니다. gethostbyaddr() 또는 파생물 (가장 가능성이 높은 옵션)을 사용하는 경우 일반적으로 시스템에서 일종의 캐싱을 제공합니다. 그러나 벤치 마크를 수행하여 많은 수의 조회를 반복함으로써이 문제로 함정에 빠지지 않도록하십시오. 나는 그것이 일어나는 것을 보았다. 그래서 단지 FYI. – GomoX

관련 문제