Пользовательская конфигурация Nginx от Kong, необходимо отключить временный файл прокси, который блокирует загрузку 1 ГБ

Попытка настроить Nginx из Kong, потому что конфигурация nginx по умолчанию имеет ограничение на временный файл прокси, которое блокирует загрузку 1 ГБ (или больше). Сложность заключается в том, что Kong работает в докер-контейнере, поэтому мы каждый раз запускаемся холодно.

Мы используем Kong в качестве обратного прокси-сервера, он предоставляет сервис https и перенаправляет запросы в открытом виде на множество микросервисов, что отлично работает. Мой вопрос похож на этот: NgInx как обратный прокси-сервер с Kong

Как бы то ни было, эта страница научила нас добавлять параметр конфигурации Nginx, который запрещает использование временного файла: https://www.scalescale.com/tips/nginx/optimizing-nginx-for-serving-files-bigger-than-1gb/

proxy_max_temp_file_size 0;

Итак, мы пытаемся понять, как передать этот конфиг Nginx через Kong. На этой странице документа Kong предлагается использовать настраиваемый шаблон конфигурации: https://getkong.org/docs/0.13.x/configuration/

Следуя этим инструкциям, мы подготовили файл шаблона и вызвали конг следующим образом:

kong start -c kong.conf --nginx-conf custom_nginx.template

Но вначале мы не видим, что пользовательские настройки, которые мы помещаем в шаблон, распространяются в файл конфигурации nginx. Кажется, Kong создает файлы конфигурации Nginx при каждом запуске. Ответ прямо перед нами ?? Нужно ли нам модифицировать файлы Kong LUA? Заранее спасибо.


person chrisinmtown    schedule 30.05.2018    source источник


Ответы (3)


Вы можете внедрить конфигурации NGINX, предоставив Kong переменную окружения. Вот ссылка на документы.

Для вашего варианта использования вы должны использовать:

export KONG_NGINX_HTTP_PROXY_MAX_TEMP_FILE_SIZE="0".

Это приведет к добавлению следующей директивы Nginx в блок http:

proxy_max_temp_file_size 0;

Здесь также представлены документы NGINX этой директивы.

person Ilshidur    schedule 30.09.2019

это своего рода загвоздка ... вот как я заставил это работать:

В вашем Dockerfile добавьте строку, чтобы скопировать собственный шаблон в изображение:

COPY ./data/nginx-custom.template /usr/local/kong/nginx-custom.template

И КОПИРОВАТЬ в новый файл docker-entrypoint.sh

COPY ./docker-entrypoint.sh /docker-entrypoint.sh

И этот CMD:

CMD ["/usr/local/openresty/nginx/sbin/nginx", "-c", "/usr/local/kong/nginx.conf", "-p", "/usr/local/kong/"]

файл docker-entrypoint.sh должен выглядеть так:

#!/bin/sh
set -e

# Disabling nginx daemon mode
export KONG_NGINX_DAEMON="off"

# Setting default prefix (override any existing variable)

export KONG_PREFIX="/usr/local/kong"

# Prepare Kong prefix
if [ "$1" = "/usr/local/openresty/nginx/sbin/nginx" ]; then
    kong prepare -p "/usr/local/kong" --nginx-conf "/usr/local/kong/nginx-custom.template"

fi

exec "$@"

эта команда kong prepare создает файл конфигурации из вашего настраиваемого шаблона, а затем ваш CMD перезапускает nginx с вашей конфигурацией.

Я чувствую, что должен быть особый для конга способ перезагрузки, но kong reload не делает то, что я от него ожидаю ...

person esperluette    schedule 16.08.2018

Позднее обновление. Решение @ esperluette, вероятно, работает. Взлом, который мы внедрили, состоит из следующих строк, добавленных в CMD запуска докера в файле конфигурации docker-compose. Это настраивает шаблон Nginx по умолчанию внутри образа докера при создании контейнера:

 sed -i -- 's/\ \ \ \ proxy_max_temp_file_size 0;//' /usr/local/share/lua/5.1/kong/templates/nginx_kong.lua
 sed -i -- '/server {/a\ \ \ \ proxy_max_temp_file_size 0;' /usr/local/share/lua/5.1/kong/templates/nginx_kong.lua

Не очень.

person chrisinmtown    schedule 17.08.2018