2010-01-01 4 views
6

AppEngine에서 실행되는 전자 상거래 서비스의 경우 고객이 맞춤 도메인에 상점을 운영 할 수있는 옵션을 제공하고자합니다 (예 : www.enstore.com 대신 www.mystore.com). /내 가게).AppEngine 인스턴스 용 맞춤 도메인

사용자 관점에서 사용자가 선호하는 도메인 이름을 입력하고 dns 구성 방법을 알려주고 싶습니다.

Google 애플리케이션을 통해 AppEngine 인스턴스에 도메인을 추가하는 방법을 알고 있지만 자동화 할 수 있는지 잘 모르겠습니다. 그리고 그게 가능하다하더라도 Google 앱 페이지에 모두 나열됩니다 (수백).

가능하면 누구나 알겠습니까?/할 수있는 좋은 방법이 있습니까?

답변

5

"프로그래밍 방식으로"AppEngine 인스턴스에 도메인을 추가 할 방법이 없다고 생각합니다. 분명히 도메인은 설명 된 Google Apps 메소드를 사용해야 만 추가 할 수 있습니다. 이것은이 SO 게시물에 확인 : 다음과 같다 마음에 팝업 How do i get foo.somedomain.com get handled by myapp.appspot.com/foo on appengine

유일한 옵션 :

  • HTTP 리디렉션

    많은 DNS 공급자 지원 HTTP 리디렉션. 이 경우 고객은 mystore.comwww.mystore.com을 설정하여 www.enstore.com/mystore으로 리디렉션 할 수 있습니다. 이 방법에는 몇 가지 명백한 단점이있을 수 있습니다. 먼저 301 및 302 리디렉션을 통해 사용자는 등록 된 AppEngine URL 인 www.enstore.com/mystore으로 전달되며 브라우저에 표시됩니다. 또한 301과 302 리디렉션 중 하나를 선택하면 SEO가 까다로워 질 수 있습니다. 검색 엔진이 이러한 리디렉션과 함께 작동하는 방식에 대해 알아야하기 때문입니다. 예를 들어 대부분의 검색 엔진은 301 리디렉션을 사용할 때 원래 URL을 키워드의 소스로 사용하지 않습니다.

    301 및 302 리디렉션 외에도 일부 DNS 제공 업체 (예 : DNS Made Easy)는 "숨겨진 숨겨진 iframe 리디렉션"이라고하는 항목을 제공합니다. 페이지는 숨겨진 iframe 내부에서 렌더링되므로 사용자의 브라우저에서는 URL이 변경되지 않습니다. 그러나 이로 인해 SEO가 더욱 까다로워지며 사용자가 내부 페이지를 책갈피에 추가하거나 쉽게 참조 할 수 없습니다.

    이 옵션은 이상적이지 않지만 상황에 따라 고려해야 할 옵션 중 하나입니다. 또한 현재 301 리디렉션을 사용하는 HTTP 리디렉션은 AppEngine 이슈 트래커의 Naked Domain Issue 777에 대한 권장 해결 방법입니다.

  • 역방향 프록시

    또 다른 옵션은 작은 Amazon EC2 Instance처럼, 다른 곳에서 작은 서버를 설정하고, 간단한 reverse proxy을 설정할 수 있습니다. 아파치와 mod_proxy (또는 여러 가지 다른 대안)을 사용하여 이것을 매우 쉽게 설정할 수 있습니다. 이렇게하면 클라이언트가이 인스턴스를 가리키는 정상적인 A 레코드를 설정하도록 요청할 수 있으며 Apache HTTP 서버는 AppEngine의 프록시 역할을합니다.

    mod_proxy에서 역방향 프록시를 설정하는 기본 구성 지정 문은 ProxyPass입니다.당신은 일반적으로 (각 클라이언트 도메인에 대한) 각 VirtualHost에 대해 다음과 같은 하나 개의 라인을 설정하는 것입니다 :

    ProxyPass / http://www.enmystore.com/mystore/

    원격 프록시의 구성은 쉽게 백엔드 소프트웨어에 의해 처리 될 수 있습니다.

    이것은 많은 것을 제어 할 수있는 깔끔한 솔루션이지만, 분명히 이러한 이점에 대한 비용이 있습니다. 우선, 역방향 프록시를 호스트하는 비용이 있습니다. 또 다른 실패 지점을 추가 할 것이므로이 계획을 고 가용성 계획에 추가해야합니다. 또한 SSL을 통해 일부 페이지를 제공하는 경우 매우 복잡해질 수 있습니다.

+1

감사합니다. 불행히도 정확히 내가 싫어했던 것 :-) 리디렉션은 실제로 SEO가 까다 롭기 때문에 좋은 옵션이 아니지만 사람들은 실제로 위치 입력란에서 도메인을 계속보고 싶어합니다. 우리는 지금 옵션 # 2로 갈 것이라고 생각하지만, gae 앞에 단일 실패 지점을 두는 것은 우선 그것을 사용하는 장점을 많이 뺏어갑니다. 나는 그들이 가까운 장래에 더 나은 것을 생각해 낼 수 있기를 바랍니다. –

+0

@Koen Bol : 또한 확장 성을 고려하는 것을 잊지 마십시오. SSL (sticky session)을 사용하는로드 균형 조정 프록시 서버의 설정을 유지해야합니다. 이것은 단순한 가게에서 매우 재미 있지 않습니다. 이는 AppEngine이 사용 사례에 맞는 올바른 솔루션이 아니라는 것을 나타낼 수 있습니다. –

2

또 다른 옵션은 각 고객이 Google 앱에 가입하도록 한 다음 앱에 appengine 앱을 추가하는 것입니다. 그렇게하면 URL을 관리 할 수 ​​있습니다. 그들은 이것을 위해 cname을 사용해야 할 것이므로 url은 'store.customer.com'과 같은 것으로 제한 될 것입니다. 호스트 헤더의 멀티 테넌시 (multitenancy)를 지원해야하지만, 그렇게하기 란 어렵지 않습니다. 이미 멀티 테넌트를 지원할 수있는 방법이 이미 있습니다. 클라이언트의 첫 번째 커플에 대한 설정을 직접 할 수 있으므로 설정하는 가장 쉬운 방법을 문서화 할 수 있습니다.

rietveld 코드 리뷰 앱은 Google 앱 도메인에 추가 할 수 있으므로이 작업을 수행합니다. 자세한 내용은 http://code.google.com/p/rietveld/wiki/CodeReviewHelp#Using_Code_Reviews_with_Google_Apps을 참조하십시오.

선호하는 옵션은 구글 솔루션 마켓 플레이스를 통해 솔루션을 제공하기 위해 아마도 : http://www.google.com/enterprise/enterprise_marketplace/about.html

+0

좋은 정보! 감사! –

0

우리는 다니엘 Vassallo 두 번째 제안에 비슷한 짓을. 우리는 Heroku 클라우드 에 파이썬 응용 프로그램을 만들었습니다 (사용자 정의 도메인 연결에는 제한이 없습니다). 이 응용 프로그램은 파이썬 요청 1.2.0 lib를 사용하여 요청 도메인에 따라 응용 프로그램 엔진 응용 프로그램에서 올바른 페이지를 가져옵니다. 클라이언트에게 Heroku 앱 URL을 CNAME으로 입력해야합니다. 알몸 도메인의 경우 항상 wwwizer를 사용할 수 있습니다.

+0

당신은 이것에 대해 밝힐 수 있습니까? 본질적으로, 우리는 rev-proxy에 대해 이야기하고 있습니다. 그러나 당신은 요청 lib로 그것을하고 있습니다. github 예제 또는 세부 사항을 제공 할 수 있습니까? 트래픽이 많은 사이트에서이 작업을 수행해야하며 nginx 프록시를 실행하고 싶지 않습니다. – flexgrip