Как переопределить nginx в среде AWS Beanstalk - PullRequest
0 голосов
/ 28 августа 2018

Во многих ситуациях нам нужно переопределить nginx conf в среде AWS beanstalk.

  • Установить максимальное вложение файла
  • Принудительно http в https
  • Установить разные значения срока действия кэша для разных статических ресурсов
  • Настройка WebSocket
  • gzip filetypes
  • и т. Д.

Служба поддержки AWS предлагает использовать nginx.conf, который является копией из приложения beanstalk, взглянув на /etc/nginx/nginx.conf в этом экземпляре. Это должно использоваться в качестве базы, а затем добавляются новые конфиги или блоки. Затем используйте .ebextensions / nginx / nginx.conf с этим содержимым в проекте. Однако самая большая проблема в этом заключается в том, что если AWS изменяет базовый nginx.conf, то может быть очень сложно сначала узнать, когда он изменился, а затем повторить шаги его копирования и добавления переопределений. Что-то вроде это

Другие опции, которые дает большинство веб-поисков, - это использование container_commands и создание файлов в appdeploy или configdeploy В командах container_commands предложили изменить /tmp/deployment/config/#etc#nginx#conf.d#00_elastic_beanstalk_proxy.conf Что-то вроде это

Проблема этого подхода заключается в том, что он работает только при развертывании приложения, а не при изменении какой-либо конфигурации beanstalk (например, при изменении env var).

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

1 Ответ

0 голосов
/ 28 августа 2018

Чтобы обеспечить гибкость развертывания гибкого бобового стебля, имейте в виду несколько вещей:

Первый : AWS не будет вносить изменения в какие-либо конфигурации в производственной среде Elastic Beanstalk напрямую. Точно так же вам не следует вносить какие-либо изменения непосредственно в вашу среду производства эластичных бобовых.

AWS рекомендует изменить конфигурацию в среде разработки и повторно развернуть через консоль или через интерфейс командной строки Elastic Beanstalk (CLI) , если вы хотите, чтобы это изменение вступило в силу. Это независимо от того, находится ли он в контейнере или нет, или с балансировкой нагрузки, или нет, с файлом конфигурации эластичного beanstalk nginx или параметром переопределения.

Второй : по первой предоставленной вами ссылке: вы либо используете конфигурацию nginx по умолчанию для эластичного beanstalk ИЛИ конфигурацию переопределения в .ebextensions. Там нет смеси обоих. Это должно помочь уменьшить вашу путаницу. Когда вы вносите изменения в любую из ваших сред разработки, это изменение подразумевает новую версию вашего приложения, и вам нужно развернуть ее в своей рабочей среде, чтобы она вступила в силу.

Третий : nginx может выступать в качестве прокси-сервера для вашего исходного сервера, а исходный сервер может определять срок действия кэша для ресурсов. Есть способы изменить конфиги в вашей конфигурации nginx, чтобы при необходимости переопределить настройку источника. Из руководства по кэшированию NGINX :

По умолчанию NGINX учитывает заголовки Cache-Control из источника сервера. Он не кэширует ответы с Cache-Control, установленным в Приватный, без кэширования, без хранения или с Set-Cookie в ответе заголовок. NGINX кэширует только запросы клиентов GET и HEAD.

Надеюсь, это поможет прояснить ситуацию. Разверните свое приложение и помните об этих методах. Если это не так, удалите его и попробуйте снова.

Задайте более конкретный вопрос, касающийся вашего приложения и конкретной конфигурации, если вы застряли. Чем больше деталей вы предоставите на свой вопрос, тем лучше мы сможем вам помочь.

...