Роман Теличко

Заметки веб-разработчика/админа

Тег nginx

Создаём и оптимизируем свой tile-сервер для OpenStreetMap на основе Ubuntu 14.04

// Сентябрь 15, 2015 | 8493 просмотров | 2 комментария

Сегодня я расскажу как довольно просто поднять и настроить свой собственный сервер карт (тайловый сервер) на основе Ubuntu Server 14.04 LTS и OpenStreetMap.

Итак начнём. Из Википедии:

OpenStreetMap (дословно «открытая карта улиц»), сокращённо OSM — некоммерческий веб-картографический проект по созданию силами сообщества участников-пользователей Интернета подробной свободной и бесплатной географической карты мира.

Есть довольно подробная официальная статья об установке и настройке tile-сервера, но есть ещё более простой и быстрый способ.
Читать далее…

Настройка nginx + php5-fpm под Linux/Debian

// Декабрь 15, 2013 | 23801 просмотров | 29 комментариев

Сегодня я расскажу как настроить связку nginx + php5-fpm под Debian.

Начнём с инсталляции nginx.
И тут же мы сталкиваемся с тем, какой именно пакет ставить, т.к. их существует аж три:

  • nginx-light
  • nginx-full
  • nginx-extras

Отличаются они только поставкой дополнительных модулей.
Вызовем описание пакета nginx-light

aptitude show nginx-light

aptitude покажет какие именно дополнительные модули входят в «лёгкую» версию nginx

STANDARD HTTP MODULES : Core, Access, Auth Basic, Auto Index, Charset, Empty GIF, FastCGI, 
                        Gzip, Headers, Index, Log, Map, Proxy, Rewrite, Upstream. 
OPTIONAL HTTP MODULES : Gzip Precompression, IPv6, SSL, Stub Status.  
THIRD PARTY MODULES   : Echo.

А теперь для сравнения выведем список модулей «расширенной» версии nginx

aptitude show nginx-extras
STANDARD HTTP MODULES : Core, Access, Auth Basic, Auto Index, Browser, Charset, Empty GIF, 
                        FastCGI, Geo, Gzip, Headers, Index, Limit Requests, Limit Zone, Log, 
                        Map, Memcached, Proxy, Referer, Rewrite, SCGI, Split Clients, SSI, 
                        Upstream, User ID, UWSGI.  
OPTIONAL HTTP MODULES : Addition, Debug, Embedded Perl, FLV, GeoIP, Gzip Precompression, 
                        Image Filter, IPv6, MP4, Random Index, Real IP, Secure Link, SSL, 
                        Stub Status, Substitution, WebDAV, XSLT. 
MAIL MODULES          : Mail Core, IMAP, POP3, SMTP, SSL. 
THIRD PARTY MODULES   : Auth PAM, Chunkin, DAV Ext, Echo, Embedded Lua, HttpHeadersMore, 
                        http push, Nginx Development Kit, Upload module, Upload Progress, 
                        Upstream Fair Queue.

Как видите, список модулей и дополнений впечатляет.
С их подробной конфигурацией вы можете ознакомиться здесь и здесь.
Я рекомендую ставить nginx-light, т.к. чем меньше будет доставлено пакетов, тем меньше памяти будет «кушать» ядро nginx. Но также необходимо учитывать нужные модули для работы.
Читать далее…

Настройка связки nginx + SVN/Subversion + trac (без Apache)

// Сентябрь 30, 2013 | 4738 просмотров | 2 комментария

Сегодня я расскажу как можно отказаться от медленного Apache для настройки связки trac + SVN/Subversion. Итак, начнём.

1. Устанавливаем и настраиваем SVN/Subversion

Ставим SVN/Subversion на наш сервер

sudo apt-get install subversion

Создаём репозиторий (для примера — в папке /var/svn/my-repository)

sudo svnadmin create /var/svn/my-repository

Устанавливаем владельца www-data для папки с репозиторием

sudo chown -R www-data:www-data /var/svn/my-repository

Теперь нам необходимо выполнить импорт файлов в репозиторий.
Для этого создадим где-то на локальной машинке (впрочем, можно и прямо на удалённом сервере) папку с некоторым именем (для примера: my-files)

mkdir my-files

И выполняем первый импорт на наш настроенный SVN-сервер:

svn import -m 'initial commit' my-files svn+ssh://my-username@my-cool-webserver/var/svn/my-repository

Где
  my-files — папка с файлами которые необходимо проимпортировать в репозиторий,
  my-username — имя пользователя на сервере,
  my-cool-webserver — адрес сервера,
  /var/svn/my-repository — путь в файловой системе сервера к репозитории

Теперь мы можем выполнять коммиты в этот репозиторий, только вначале необходимо будет сделать checkout репозитория в папку для дальнейшей работы.
Делается это так:

svn checkout svn+ssh://my-username@my-cool-webserver/var/svn/my-repository

Данный способ настройки SVN/Subversion называется SVN over SSH.
Читать далее…

Делаем запросы в PostgreSQL из nginx кэшируя с помощью Redis

// Май 23, 2013 | 5334 просмотров | комментариев (0)

Сегодня я расскажу как можно работать с базой данных PostgreSQL с помощью nginx’a без application’a (например, PHP или любого другого). Т.е. эта технология абсолютно не зависит от языка, на котором сделан сайт/проект/система.
Мы будем использовать мощь PostgreSQL в хранимых процедурах (stored procedures/functions), а кэшировать с помощью быстрого Redis.
Читать далее…

Как сохранять POST-значения в access-логи nginx’a

// Январь 17, 2013 | 3878 просмотров | комментариев (0)

Если есть необходимость сохранения в лог обращений к веб-серверу nginx значения, переданные через POST, то это делается довольно просто.

Добавляем в конфиг nginx’a дополнительный log_format с именем, к примеру main_post (сама переменная называется $request_body):

log_format      main_post       '$remote_addr - [$time_local] '
                                '$host "$request" $status $bytes_sent [$request_body] '
                                '"$http_referer" "$http_user_agent" '
                                '"$gzip_ratio" $upstream_response_time';

И теперь осталось только указать этот формат вторым параметром access_log:

access_log      /var/log/nginx/access.log      main_post;

Сразу скажу о двух важных моментах:

  1. Если к логам сервера имеет доступ ещё кто-то, то все POST-данные из лога ему станут известны
  2. Лог может ОЧЕНЬ быстро разбухать в размерах

А в остальном — пользуйтесь!

Перепост: Защита от DDOS атаки случайными аргументами при помощи Nginx

// Сентябрь 20, 2010 | 209 просмотров | комментариев (0)

Я встретился с новым типом ботнета. Если старый долбил только в главную, то новый действует иначе. Он посылает множество запросов вида
GET someurl/?t1555ss5326=5326,
где someurl — найденный ботом php скрипт.
Но если атакуемый сайт поддерживает ЧПУ, то такие запросы к нему должны отсутствовать в принципе. ЧПУ сейчас является стандартом де-факто, по этому можно смело отрезать такие запросы, логируя IP ботов.
Для этого очень удобен nginx, и его переменная is_args, которая имеет значение «?», если в URI идут аргументы. Базовая конструкция выглядит так:

if ($is_args = "?") { 
    return 444; 
}

Очень просто и красиво, правда?
Вот как выглядит LA после включения этой защиты:
load average: 1.50, 3.09, 6.96
Текущий ботнет из ~20000 зомби, делают 5-8k одновременных запросов.

Оригинал: https://habrahabr.ru/blogs/infosecurity/104601/