All streams
Search
Write a publication
Pull to refresh
299
0
Валентин Бартенев @VBart

Руководитель разработки «Angie Software»

Send message

Забавно наблюдать старательно сконфигурированный A+ в ssllabs и дырку в безопасности в виде:


resolver 8.8.4.4 8.8.8.8;

Планами делились на nginx.conf. Можно посмотреть на нашем youtube-канале.


Также на прошлом HL++ был доклад и в этом году будет.

Всё верно. Резолвит указанный server в upstream в фоновом режиме с TTL интервалом.

Вы просто никогда не настраивали sendmail. =)


Посмотрите хотя бы сколько страниц в книге по sendmail:
http://shop.oreilly.com/product/9780596510299.do

Да, Игорь оговорился. В первом случае речь шла о sendmail, во втором об if.

Например, директива resolver работает внутри location только в nginx+. В бесплатной версии ее необходимо вытащить на уровень server.

Это не так. В обоих версиях директива может быть задана на уровне location.

Вот, убрали все proxy_*, и уже стало заметно лучше (ещё бы один proxy_set_header убрать для приличия). Можно еще почистить, как минимум, убрав дублирующиеся директивы. Директивы в nginx наследуются с предыдущего уровня, если не переопределены на текущем. Поэтому нет смысла явно указывать gzip on на уровне location, если у вас с уровня http и так унаследуется данное значение (то же касается access_log off). Практически все директивы fastcgi_param присутствуют в файле fastcgi_params, который поставляет с nginx-ом, и достаточно его включит в конфигурацию директивой include. А если ещё выкинуть из конфигурации кучу других настроек, которые не относятся непосредственно к делу, а просто сделаны вами на свой вкус, то конфигурация станет гораздо лаконичнее и за счет этого легче читаться.

Практически обо всех, что вы бездумно накрутили. Больше половины директив в данной конфигурации nginx лишено смысла.

Начните с того, что не трогайте настройки, которые вы до конца не понимаете как работают. Вот с какой целью вы выключили proxy_buffering? Это требуется в очень редких случаях, а в остальных ведет только к снижению производительности и расходу ресурсов. Зачем включили multi_accept? Зачем вообще трогали keepalive_timeout? Зачем спиливаете заголовки Range? Хотели защитить Apache, для этого есть директива max_ranges, хотя эта уязвимость была исправлена более 5 лет назад и если вы с тех пор не обновлялись, то у вас в любом случае проблемы. Вы также неправильно понимаете что содержится в переменной $proxy_add_x_forwarded_for. Указание localhost в директиве proxy_pass вместо явного IP-адреса, может приводить к тому, что он будет резолвиться в IPv4 и IPv6, при этом Apache у вас слушает только на IPv4. Остальные настройки тоже вызывают вопросы. К примеру, вы зачем-то зарезервировали место под хранение 10 000 файловых дескрипторов в каждом рабочем процессе на 3 минуты. Иными словами вы предполагаете, что ваш сервер будет практически непрерывно раздавать одновременно до 10 тысяч различных файлов. И это учитывая, что при этом вы установили максимально 1024 соединения на рабочий процесс.


В чем была цель написания данного материала? Статьи тут пишут для того, чтобы делиться знанием, а не незнанием. А вопросы в стиле "помогите разобраться, исправьте мои ошибки" — для этого существуют другие ресурсы. Те же списки рассылки, например. Существует платная поддержка, люди платят деньги, чтобы кто-то их консультировал, исправлял ошибки и обучал.


посмотрел у вас тоже всё начиналось с минусовой кармы ))

Вы меня с кем-то путаете.

Целый ряд вредных советов по настройке nginx, ни чем не обоснованных значений директив.

Нельзя его отключить без правки исходников. Или собрать nginx вообще без поддержки http.

Обычно ставят 8888. Это Гугловский public DNS, но если у вас есть свой DNS на сервере, то я бы рекомендовал поставить localhost.

Это здорово, рассказывать в статье про A+ и при этом упоминать настройку, которая может привести к спуфингу. Рекомендации тут мало.

Ждать он будет когда попытается открыть другую страницу. Использовать недокументированную директиву, которая недокументирована по той причине, что её лучше не использовать — это плохая идея.

Этот файл конфигурирует утилиты командной строки, а не библиотеку.

Напишите в поддержку, им видно и ваш аккаунт, и что происходит.

Чтобы иметь 5 директив, которые невозможно настроить правильно в сколь угодно сложном окружении, которым является интернет?


Если очень хочется, то можно уменьшить ssl_buffer_size до 6-8k и этого более чем достаточно для обеспечения минимального TTFB в большинстве случаев.

А если вы используете HTTP/2, то есть еще буферизация с использованием http2_chunk_size (по умолчанию 8k).
Директива `http2_chunk_size` не имеет никакого отношения к буферизации.

Динамические модули нужны в двух случаях:


  1. Вы автор коммерческого модуля с закрытым исходным кодом хотите собрать свой модуль для коммерческой версии NGINX Plus;
  2. Когда нужно в репозитории поставлять nginx с разным набором модулей. В первую очередь это интересно, когда некоторые модули требуют внешние зависимости и вы не хотите пользователей заставлять их устанавливать, если они им не нужны. В таком случае, вместо сборки множества разных пакетов nginx с разными комбинациями модулей, достаточно собрать один пакет с nginx и дополнительные пакеты с отдельными модулями.

Большинству же обычных пользователей никакой особой пользы от самостоятельной сборки динамических модулей нет.

У автора в статье эта проблема тоже никак не решена. Модули, собранные с другой версией nginx, не загрузятся в новую.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity