to post messages and comments.

Юзаю nginx как прокси. В логах сервера тишина и порядок. А в логах nginxа бардак и треш. Народу стало больше валить на сайт. Чаще 504 вылетать стал. Поставил proxy_timeout и ряд других таймаутов чуть побольше. Будем посмотреть дальше.

Коллеги, разбирающиеся в nginx, подскажите, плз. А то я не очень в этой платформе разбираюсь.

Есть nginx, проксирует доступ по HTTP к специальному серверу, на котором выкладываются файлы с расширениями .abc и рандомными именами. Специальные клиенты за этими файлами приходят с точным именем в запросе.
В некоторых ситуациях необходимо отдавать под теми именами, которые запрашивают клиенты, контент из файла file.abc, лежащего на этом nginx.
Т.е. не редиректить по 302/http, а именно отдавать другое содержимое под тем же именем.

Через какой механизм nginx это делать правильно? Rewrite позволяет так сделать?

nginx ppa сломали. Не апгрейдится штатно. Вот простейшее решение:

Work-around fix:

Edit /var/lib/dpkg/info/nginx-common.config

and add a return on the first line of the log_symlinks_check function.

e.g.:

 log_symlinks_check() {
     return                <---- here
     # Skip new installations
     [ -z "$1" ] && return

настроил в nginx кэширование браузером.
всего-то загуглить дохера блогов, чтоб узнить как делается это именно на NIC.RU, одно письмо в техподдержу, и готово — я восхитителен! :)))
не знаю правда, на долго ли. на другом хостинге тоже 2 дня переписывался с техподдержкой, чтобы наконец заработали все нужны заголовки правильно, а щас только что полез сравнивать что выдают сайты — на старом опять все вернулось на дефолт. опять долбить их через тикеты :( мрак

Капец. Перевернул ввер хном все настройки, включил чуть ли не отладочные логи чтобы в итоге выяснить что тормозит ... dns.
2 ip на 1 хост и при обращении к хосту тормоза через раз...

ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";

В nginx появилась поддержка балансировки UDP-соединений
opennet.ru
Разработчики http-сервера nginx объявили о реализации поддержки балансировки UDP-соединений, которая дополнила собой ранее добавленный балансировщик произвольных TCP-соединений, реализованный в виде модуля stream. Проброс UDP может быть полезен для распределения нагрузки между несколькими DNS-, syslog- или radius-серверами. UDP-балансировщик уже интегрирован в репозиторий с исходными текстами nginx и войдёт в состав намеченного на 23 марта выпуска 1.9.13

Можно ли как-то заставить нгинкс смотреть внутрь архивов? Достаточно какого-нибудь одного формата, tar.gz например. Хочется просто складывать файл на фс, а при доступе к нему отдавать не его, а лезть внутрь и показывать содержимое, ну как с обычной директорией происходит.

tengine.taobao.org — если кто ещё не видел. китайцы с алибабы запилил свой форк нгинкса, который реализовывает многие фишки платной версии нгинкса, только не за 5 килобаксов в год, а опенсорсно. мержатся с апстримом, но с некоторой задержкой.

nginx, оказывается, не умеет переменные в ssl_certificate/ssl_certificate_key, поэтому написать "ssl_certificate /etc/nginx/ssl/$ssl_cname.pem" и получать $ssl_cname из $ssl_server_name с помощью map не получится.

В то время как в pound можно просто накидать несколько директив Cert подряд и оно из них автоматом выдернет тот, который подходит для представленного SNI хоста.

С другой стороны, в nginx можно переменные в proxy_pass, что позволит с помощью того же map получать адрес бэкенда из имени хоста и не плодить по 7 строк на каждый хостнейм, как в pound. Но для SSL хостов таки придётся как минимум по 6 на каждый (server_name, сертификат, ключ и include общего куска конфига с проксипассом, плюс скобочки). Ну или чем-то генерить.

В общем, печаль и уныние кругом :(

Можно ли как-то сделать так, чтобы nginx по одному и тому же запросу делал proxy_pass на один из проксей из списка? В частности, мне хочется повесить таким образом несколько питоновских сервисов, чтобы смочь в мультипоточность.
P.S. сервис уже есть готовый, предложения переписать всё на г-е, э-е или х-е не принимаются.

опа, походу nginx таки научили не класть тело запроса в буфер перед отправкой на бэкенд: nginx.org

Надо будет таки попробовать избавиться от pound на серваке с кучей хлама, раскиданного по контейнерам, и сделать всё на nginx через map, а не копипастить на каждый виртуалхост кучу директив.

Всезнающий жуйк, а как бы мне попроще ограничить доступ к определённым урлам на моём веб-сервере для белого списка OpenID адресов? Например, часть мунинских графиков показывать только определённым людям?

Нашёл mod_auth_openid для apache, но печалька: до сих пор обходился nginx, а городить пирог из nginx и Apache не хочется.

Уф. Решил задачу автоматического конфигурирования Docker-связки nginx/host + nginx/container + php-fpm/container. Т.е. чтобы одним скриптом запуска всё соединялось в работающую конфигурацию. Пока всё костыльно, без прав доступа и т.п. Но не придётся придумывать статические порты доступа для контейнеров или вручную прописывать проксирование на nginx-хосте.

Хром такой хром... В nginx.conf прописано ssl_ciphers kEECDH+AES:kEDH+3DES:kRSA+3DES:!eNULL:!aNULL:!DSS;
Идём на хост в огнелисе — заюзывается ECDHE-RSA-AES128-GCM-SHA
Идём в хроме — заюзыватся ECDHE-RSA-AES128-CBC-SHA и пишется что соединение не очень надёжное

Приходится жёстко прописывать приоритет строкой вида ssl_ciphers kEECDH+AESGCM:kEECDH+AES256:kEECDH+AES128:kEDH+3DES:kRSA+3DES:!eNULL:!aNULL:!DSS;

Почему хром не может сразу законнектится с AESGCM сразу? Почему только из под палки?

*linux

Как всегда, вопрос линуксоидам.
Кто-нить дружил UMI.CMS с Nginx + php-fpm?
а то на оффсайте пример конфига нихрена не работает...
Если есть такие, киньте в меня конфигом, нету — тогда рекомендет, шоле...

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

Я подниму еще интанс новой апликухи, поправлю конфиг что-бы он проксировал новый инстанс, сделаю nginx -s reload, спокойно прибью старый инстанс.

Это хороший способ или я получу кучу ошибок на клиенте?

А может кто-нибудь подсказать что и где в связке nginx+php-fpm крутить, чтобы загрузка файлов пошла через формочку с "multipart/form-data" и методом post? Пока вижу только данные из $_POST но $_FILES пустой.

а apache в структуре запроса нет времени окончания обработки запроса. mod_log_config делает очень странный изгиб через одно место, чтобы не дублировать функции взятия времени для одного запроса, а все остальные особо не парясь фигачат apr_time_now(), который внутри для UNIX gettimeofday() со всеми вытекающими. nginx легче. он кидает время аж в массив (хз зачем). и сразу форматирует всякими разными способами. что выглядит громоздко. челодлание какое-то сплошное

Продолжаю постигать дзен Docker'а. Поток мыслей по теме :)

Вот nginx. Отлично контейнеризуется. Делаем минимальный образ и запускаем только его. Официальный nginx весит 100Мб... Многовато, но если хотя бы на десяток контейнеров поделить — копейки. А вот автоматически dockerfile/nginx весит уже аж 500Мб. Посмотрел — они аж из целой Ubuntu его собирают! Вот нафига попу гармонь? Это ж снова попытка сделать из Docker оригинальную LXC! А нужно-то только один голый nginx иметь. При запуске контейнера указать персистентные конфиг и docroot. И всё, больше ничего не нужно. Даже 100Мб — это дофига.

Дальше — больше. nginx'у нужен php-fpm. Прекрасно, он пашет по сетевому интерфейсу, отлично конфигурится в той же Ubuntu (хоть индивидуально модули задавай). То есть, логика простая — запускаем контейнер с nginx, запускаем контейнер с php-fpm, каждый сам по себе, всем хорошо. С обновлениями просто, каждый обновляется отдельно (если я правильно понял, достаточно периодически docker pull делать — и всё). Фигушки. Нет вообще в docker hub'е голого php-fpm! Только в паре с nginx (в лучшем случае, а то целые комбайны). Такое впечатление, что народ сути Docker не только вообще не понимает, но и подумать на этот счёт не хочет :)

Судя по всему, придётся заводить самому в хабе минимальный образ с php-fpm, да ещё писать для народа идеологический how-to :)

Наткнулся на забавный баг.
На офсайте nginx.org собраны nginx'ы для многих дистрибутивов, подключай репу типа да используй.
Однако там nginx собран без поддержки perl, что делает невозможным послать ему HUP (из прилагающихся стартовых скриптов в т.ч.), только restart с погашением процесса и даунтаймом сервиса.

Проблема хорошо описана вот здесь nginx.org
В частности
Note that there is no way to specify the catch-all name or the default server using the server_name <nginx.org> directive. This is a property of the listen <nginx.org> directive and not of the server_name <nginx.org> directive.
До обновления директива была
server_name '';
после обновления этот своеобразное catch-all name работать перестало, и сайты отпали,
На одном единственном сервере где в одном единственном конфиге стояло catch-all name ''.