Жизнь, веб, XMPP, TAS, электронные самоделки

Использование GeoIP-модуля

Поддержка GeoIP в nginx позволяет реализовать на уровне конфигурации веб-сервера множество полезных возможностей, к примеру, выдачу содержимого на языке страны посетителя без использования динамического содержимого (PHP). Аналогичным образом можно сделать выбор наиболее удачного зеркала для загрузки файла.

Пусть имеется некий центральный сервер загрузок download.example.com и его зеркала в Сингапуре и Далласе, доступные по адресам download-singapore.example.com и download-usa.example.com. Ставится задача реализовать загрузку файлов с download.example.com так, чтобы посетители из Сингапура, Индонезии и Малайзии загружали данные с зеркала в Сингапуре, все остальные — с зеркала в Далласе. Это можно сделать на основном ресурсе таким образом:

if ($geoip_country_code = ID) {
  rewrite ^(.*)$ http://download-singapore.example.com$1 last;
}
if ($geoip_country_code = SG) {
  rewrite ^(.*)$ http://download-singapore.example.com$1 last;
}
if ($geoip_country_code = MY) {
  rewrite ^(.*)$ http://download-singapore.example.com$1 last;
}

rewrite ^(.*)$ http://download-usa.example.com$1 last;

Способ можно усложнить на любое число зеркал, включая и более простой способ, когда у сайта-оригинала лишь одно зеркало, в этом случае нужно просто убрать последний безусловный rewrite и указать там требуемые настройки виртуального узла…