Как настроить параметры конфигурации nginx для каждого приложения в Dokku?

Мне нужно увеличить параметр client_max_body_size для одного приложения, которое я установил на Dokku Paas. Я мог бы отредактировать конфигурацию nginx глобально, но это было бы ненадежно, и я хотел бы, чтобы этот параметр работал с конфигурацией приложения, где это возможно.

Я видел некоторые плагины, которые помогают переписать файл nginx.conf (например, https://github.com/mikexstudios/dokku-nginx-alt), но это кажется излишним, когда я хочу изменить только один параметр.

Я также заметил хук плагина nginx-configure (https://github.com/progrium/dokku/pull/189), но я не смог найти четких инструкций о том, как использовать это из приложения (например, куда бы я мог поместить хук-скрипт?).

Каков самый чистый, удобный и переносимый метод установки одного параметра конфигурации nginx для каждого приложения?


person flightlessbird    schedule 27.08.2014    source источник
comment
И в чем проблема? Эта директива может быть использована где угодно   -  person Alexey Ten    schedule 27.08.2014
comment
Извините - не слежу. Какая директива? Мой вопрос заключается в том, как установить конкретную настройку nginx для каждого приложения.   -  person flightlessbird    schedule 28.08.2014
comment
nginx ничего не знает о вашем приложении. Nginx работает в терминах блоков server и location. Где-то у вас есть блок местоположения, который передает запрос вашему приложению. Вы можете добавить директиву client_max_body_size в этот блок.   -  person Alexey Ten    schedule 28.08.2014
comment
Вы видели, что это конкретно вопрос о докку? Я знаю, как настроить это самостоятельно, но это работает в среде PAAS, где конфигурация nginx создается автоматически. Спасибо за вашу помощь!   -  person flightlessbird    schedule 28.08.2014
comment
Я нашел этот плагин, который использует perl для изменения nginx.conf после развертывания: github.com/fabiooshiro/dokku-client-max-body-size/blob/master/ Вы можете условно изменить файл для каждого приложения (например, когда определенный файл в приложении каталог существует)   -  person chmanie    schedule 30.09.2014


Ответы (1)


Этот вопрос немного устарел, но я столкнулся с ним при поиске решения того же вопроса.

По умолчанию сайты dokku устанавливаются в /home/dokku/{site-name}.

В этой папке есть один основной файл nginx для каждого приложения, nginx.conf. Этот файл будет заменяться каждый раз при развертывании, поэтому вы не хотите его менять.

Однако вы увидите, что в этом основном файле nginx.conf есть следующая строка:

  include /home/dokku/{site-name}/nginx.conf.d/*.conf;

Который будет включать любые файлы .conf в папке nginx.conf.d.

Таким образом, вы можете добавить файл с именем upload.conf (например) в папку nginx.conf.d, содержащую только client_max_body_size 50M;, и вы добьетесь того, чего хотите.

После создания каталога и файла конфигурации убедитесь, что вы chown передаете их пользователю dokku.

См. https://github.com/dokku/dokku/blob/master/docs/configuration/nginx.md для получения дополнительной информации.

person RYFN    schedule 09.06.2016
comment
я использую реактивный маршрутизатор, и мне нужно перезаписать местоположение / {}, и, похоже, я не могу сделать это в nginx, есть идеи? - person Sîrbu Nicolae-Cezar; 27.10.2017