1

레일 3.1.1을 사용 중입니다. 예를 들어 미국에서 사용자를 적절한 서브 도메인 us.site.com (여기는 site.com과 동일한 서버에서 호스팅 됨)로 리디렉션하고 싶습니다. 그/그녀의 IP 주소로 사용자를 현지화 할 수 있다는 것을 알고 있지만 어떻게해야 적절한 하위 도메인으로 리디렉션 할 수 있습니까? 사용자 IP의 위치를 ​​지정하고 리디렉션을 처리하는 기술/보석이 있습니까?사용자를 현재 위치에 따라 하위 도메인으로 리디렉션하는 방법은 무엇입니까?

P.S. : 아마, 성능상의 이유로, 나는 미들웨어를 사용해야합니다 ... 내가 과거에 즐겁게 사용했던

답변

1

https://rubygems.org/gems/rack-geoipcity은 게시자가 사용할 수있는 랙 미들웨어 보석이거나 컨트롤러에 GeoIP 보석을 사용하는 것입니다.

rack-geoipcity를 사용하면 추가 한 X- 헤더를 쿼리하고이를 기반으로 결정합니다. 다음과 같이 입력하십시오 :

if headers['X_GEOIP_COUNTRY_CODE'] == "IN" 
    redirect "/india" 
end 

현재 레일스를 사용하고 있지는 않지만 약간 다를 수 있습니다.

There are plenty to choose from MaxMind db를 사용하지 않으시면.

1

한 가지 방법은 사용자가 서비스에 연결하기 전에 DNS 를 통해 위치 정보 조회를 수행하는 것입니다; 이렇게하면 가장 가까운 서버에 자동으로 연결되므로 저렴하고 쉬운로드 균형 조정 기능과 필요에 따라 서버를 활성 상태에서 제거 할 수 있으며 개별 사이트는 다른 사이트에 영향을 미치지 않고 중단 될 수 있습니다.

OFTC는 가장 가까운 서버를 사용자에게 제공하기 위해 자체 작성된 oftcdns 도구를 사용합니다. OFTC 네트워크 관리자였던이 도구는 지리적 위치 기능을 제공하지 않고 서버를 순환 교환하는 작업을 복잡하게 만드는보다 간단한 Bind 기반 DNS 서버를 실행하는 것보다 훨씬 개선되었습니다.

위키 백과에서는 geo-ip 서비스를 제공하기 위해 PowerDNS with a geobackend을 사용합니다. PowerDNS는 확실히 테스트가 잘 된 수요가 많은 도구입니다.

+0

간단히 말해 사용자를 기본 도메인의 동일한 서버에 호스팅 된 하위 도메인으로 리디렉션하고 싶습니다. 어쩌면 당신의 해결책은 나의 요구를 위해 "진보 된"것입니다 ... – Backo

+0

@sarnold +1, 이것은 정말로 흥미로운 것 같습니다. – iain

+1

@Iain : 다른 패션에서는 해결하기 어려운 문제를 확실히 해결하지만 랙 미들웨어는 Backo에 훨씬 적합합니다. :) – sarnold

관련 문제