Назад | Перейти на главную страницу

Маршрутизация веб-сервера на основе местоположения

У меня есть веб-сайт, на котором есть пользователи как из Гонконга, так и из Австралии.

К сожалению, поскольку сервер находится в Австралии, пользователи из Гонконга будут испытывать проблемы с задержкой. Перед возвращением в Австралию трафик должен пройти через США.

Итак, я установил сервер в Гонконге, и пользователи, использующие TLD .hk, будут перенаправлены на веб-сервер Гонконга. Он использует тот же сервер базы данных, что и австралийский сервер, но из-за агрессивного кэширования SQL-запросов влияние задержки на SQL-запросы на производительность незначительно.

Но для пользователей, которые привыкли к веб-сайту Гонконга, но с тех пор побывали в Австралии, они страдают от дополнительной задержки, потому что они переходят на сайт .hk, который перенаправляется на сервер HK, даже когда они находятся в Австралии. Веб-сайт ориентирован на иностранных студентов из Гонконга, поэтому для меня это серьезная проблема.

Вместо перенаправления пользователей на ближайший веб-сервер на основе TLD, как мне перенаправить пользователей в зависимости от их местоположения?

В настоящее время я использую nginx, postgres и Django. Скажем, я знаю, как оценивать местоположение пользователей на основе IP-адресов пользователей, каков мой следующий шаг? На каком уровне я бы работал? Какую тему я должен прочитать?

Один из вариантов - использовать модуль GeoIP в nginx и перенаправить вашего пользователя на соответствующий сайт. В этом случае запрос будет медленным, пока не будет перенаправлен на соответствующий сайт.

Второй вариант - DNS. Используйте решение на основе Geo DNS. Подробнее об этом можно прочитать в этом нить. GeoDNS не работает, если пользователи используют Google DNS или OpenDNS