Заметки по nginx

= точное совпадение ^~ - не пробовать другие регекспы после совпадения, более строгие локейшены, чем простые * - регистро зависимый регексп ~* - регистро независимый регексп

30 грудня 2019 · 1 хвилина · 26 слів · dimetrius

Пример конфигурации ограничения скорости обработки запросов в nginx с исключениями

Очень краткая заметка с примером как можно ограничить скорость обработки запросов от IP адресов, но исключив при этом роботов с определённым “юзер агентом”. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 # ref: https://gist.github.com/supairish/2951524 # IP адреса в белом списке - для них не будет применяться лимитирование geo $geo_whitelist { default 0; 1.2.3.4 1; 2.3.4.5/24 1; } # Юзер агенты в белом списке - для них не будет применяться лимитирование map $http_user_agent $whitelist { default $geo_whitelist; ~*(google) 1; } # Если в белом списке 0, то помещаем "binary IP address" в $limit для применения к ним ограничений map $whitelist $limit { 0 $binary_remote_addr; 1 ""; } limit_req_zone $limit zone=perip:30m rate=1r/s;​

25 вересня 2019 · 1 хвилина · 124 слів · dimetrius

Ограничение скорости обработки запросов в nginx

NGINX великолепен! Вот только его документация по ограничению скорости обработки запросов показалась мне, как бы это сказать, несколько ограниченной. Поэтому я решил написать это руководство по ограничению скорости обработки запросов (rate-liming) и шейпингу трафика (traffic shaping) в NGINX. Мы собираемся: описать директивы NGINX, разобраться с accept/reject-логикой NGINX, визуализировать обработку всплесков трафика на различных настройках. Директивы NGINX по ограничению скорости обработки запросов В этой статье мы будем говорить о ngx_http_limit_req_module, в котором реализованы директивы limit_req_zone, limit_req, limit_req_status и limit_req_level....

7 червня 2019 · 7 хвилин · 1337 слів · dimetrius

Установка сертификатов от Let's Encrypt с помощью acme.sh (версия 2019 года)

В этой статье опишу небольшую инструкцию для установки сертификата с помощью acme.sh на базе алгоритма ECDSA P-384, этот алгоритм имеет высокий уровень быстродействия и защищенности. Например 256 битный ECDSA соответствует 3072 битному RSA по степени защиты, но при этом скорость работы в несколько раз выше. Установка acme.sh 1 curl https://get.acme.sh | sh Получение сертификата Метод 1 : использование одной и той же директории для всех acme challenge запросов Первоначально нам необходимо создать файл acme....

28 травня 2019 · 3 хвилин · 526 слів · dimetrius

OpenSSL, ssl_ciphers и nginx: прокачиваем на 100%

Много где написано о том, как получить 100% и A+ по тесту от Qualys. При всём при том практически везде директивы ssl_ciphers и подобные даются как эдакие магические строки, которые нужно просто вставить, и надеяться, что автор не подводит вас под монастырь. Эта статья призвана исправить это недоразумение. По прочтению этой статьи директива ssl_ciphers потеряет для вас всякую магию, а ECDHE и AES будут как друзья да братья. Подготовка Работать будем с Debian 8....

4 квітня 2017 · 11 хвилин · 2334 слів · dimetrius

SSL между фронтендом и бэкендом через несколько прокси серверов

Сложность в том, что некоторым скриптам необходимо знать через какую схему они работают, http, или https. Таким образом они формируют ссылки, а иногда принудительно перенаправляют клиентов куда нужно. Из-за не верной настройки серверного ПО переадресация не может завершиться и браузер покажет нам ошибку ‘too many redirects’. В статье рассмотрим две схемы: nginx (front1, server2) -> nginx (front2, server1) -> php-fpm (back, server1) nginx (front1, server2) -> nginx (front2, server1) -> apache (back, server1)...

25 вересня 2016 · 3 хвилин · 476 слів · dimetrius

Nginx - перенаправление на мобильную версию с cookies

Давно искал что-то подобное. Конфигурация nginx позволяет перенаправлять посетителей сайта на мобильную версию по UserAgent‘у. И казалось бы… это совсем не сложно, но у нас есть ещё и плюшки. Плюшки в том что мы можем добавить в адресную строку параметр для переключения на полную версию, или обратно на мобильную. Всё это записывается в cookies и сохраняется на заданное нами время. т.е. людей не будет напрягать то, что их при каждом входе принудительно перенаправляет на мобильную версию, а они то хотят полную....

13 квітня 2016 · 2 хвилин · 297 слів · dimetrius

Nginx, ipv6 и виртуальные хосты

Пару лет назад думал что настроил на вэб сервере поддержку ipv6, все онлайн тесты проходили на ура. Но сейчас, настроив у себя ipv6, понял что при обращении к сайтам получаю в ответ “403 Forbidden”. Не приятно конечно, но надо что-то делать. Тогда, при настройке, была информация что нужно добавлять в конфиг сервера запись вида 1 listen [::]:80 ipv6only=on; при чём если её добавлять в несколько виртуальных серверов, то nginx выкидывал ошибку....

13 квітня 2016 · 1 хвилина · 164 слів · dimetrius

Динамические поддомены на nginx

Заметка об использовании переменных в домене на web сервере nginx, или динамические поддомены. Важно не забыть выше расположить статические поддомены, чтоб динамические их не перебивали. Ну и примеры ниже: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 server { server_name www.example.com; location / { proxy_pass 127.0.0.1:80; } } server { server_name ~^(?<dynamic>[a-z0-9\-]+)\.example.com$; location / { proxy_pass 127.0.0.1:80/sites/$dynamic$uri$is_args$args; } } Вот ещё вариант: Если у вас много поддоменов или вы хотите создавать их автоматически, тогда имеет смысл создать одну универсальную конфигурацию, которая будет обслуживать все поддомены, направляя запросы посетителей в соответствующие каталоги....

13 квітня 2016 · 1 хвилина · 213 слів · dimetrius

Ограничение доступа средствами Nginx

Небольшая заметка о том, как средствами Nginx закрыть доступ к файлам/папке по паролю. В nginx это решение не менее элегантно, чем в apache, а может и еще лучше, кому как нравится. В конфигурационном файле, в папке (локейшене), которую хотим закрыть надо только указать файл, где хранятся пароли. Вот два примера для закрытия папки с файлами: 1 2 3 4 5 6 7 8 location ^~ /files/ { root /path/to/server; autoindex on; autoindex_exact_size off; auth_basic "Hello, please login"; auth_basic_user_file /usr/nginx/passwords; access_log /usr/nginx/logs/files....

13 квітня 2016 · 2 хвилин · 359 слів · dimetrius