Этот пост о том, как запустить django с nginx (с блокировкой нежелательных ботов и с установленной базой GeoIP).
Инсталляции по каждому детально рассмотрены здесь: nginx, django, django+fcgi, flup.

Не зависимо от того, запускается ли django в threaded- или в fork-режиме, для соединения с сервером используется FastCGI, через сокет или через порт.
Вот эти четыре варианта скрипта для запуска, один из которых надо поместить в каталог вашего проекта:
* Threaded+socket
* Threaded+Port
* Fork+socket
* Fork+Port

Теперь создадим базовый конфигурационный файл для nginx. При конфигурировании перед инсталляцией я задал основным каталогом /usr/nginx.
Nginx позволяет подгружать конфигурацию из других файлов, чем я и воспользовался. Разделил на основной файл с общими настройками, файл с параметрами для FastCGI, файл с адресами базы GeoIP и файлы для каждого проекта/домена.

Для GeoIP модуля я использовал бесплатную версию с сайта maxmind.com и ip-to-country.webhosting.info, которые с помощью своей утилиты и из пакета nginx/contrib сконвертировал в приемлемый для веб-сервера вид, при этом изрядно переработав и дополнив.
Пример:
2.6.190.56/29 GB;
3.0.0.0/8 US;
4.0.0.0/12 US;
Скачать уже готовую базу по странам можно у меня (gzip 0.6MB).
Переменная $geo может быть записана в логи, а также передается в приложение через параметры FastCGI. В django-проекте может быть вызвана как request.META['GEO']

Также в основной конфиг я включил ограничение на скорость скачивания для разных ненужных поисковых ботов и блокирование некоторых спамеров, туда легко что-то свое добавить или убрать.

Здесь все конфигурационные файлы:
nginx.conf
django.conf
fastcgi.conf
bots.conf
geoip.conf (gzip 0.6MB)
Детальная информация о django здесь и здесь. О nginx: здесь и здесь.

21 Votes | Average: 4.5 out of 521 Votes | Average: 4.5 out of 521 Votes | Average: 4.5 out of 521 Votes | Average: 4.5 out of 521 Votes | Average: 4.5 out of 5 (21 votes, average: 4.5 out of 5)
Loading ... Loading ...

Top Posts: