Подтвердить что ты не робот

Как изменить конфигурацию nginx в эластичном beanstalk amazon, запускающем экземпляр докера

После того, как я вхожу в систему и установлен файл cookie, я получаю ошибку 502. Когда я читаю журнал, я получаю сообщение об ошибке:

014/05/17 01:54:43 [error] 11013#0: *8 upstream sent too big header while reading response
header from upstream, client: 83.248.134.236, server: , request: "GET /administration
HTTP/1.1", upstream:

После быстрого поиска в Интернете я нашел: http://developernote.com/2012/09/how-i-fixed-nginx-502-bad-gateway-error/

и я хочу попытаться установить fastcgi_buffers и fastcgi_buffer_size на другое значение. Но как установить переменную на nginx в эластичном ласточке амазонки?

Сервер nginx находится перед моим экземпляром docker.

4b9b3361

Ответ 1

Мне также нужно было изменить конфигурацию nginx.

  • Создайте script, который изменяет конфигурацию nginx (возможно, вы хотите /etc/nginx/sites-enabled/elasticbeanstalk-nginx-docker.conf) и перезагружает службу nginx (service nginx restart).
  • Вам необходимо выполнить этот script после того, как будет записан файл конфигурации nginx, который будет выполнен после выполнения нормальных ebextensions. Это недокументировано, но Эван рассказал, как это сделать здесь: по сути, вы используете ebextension для копирования script в каталог с крючками, которые запускаются в соответствующее время.

Пример конфигурации ebextension: .ebextensions/01modify_nginx.config:

container_commands:
  copy:
    command: "cp .ebextensions/01rewrite_nginx_config.py /opt/elasticbeanstalk/hooks/appdeploy/enact/"
  make_exe:
    command: "chmod +x /opt/elasticbeanstalk/hooks/appdeploy/enact/01rewrite_nginx_config.py"

Теперь это хорошо работает для моего проекта (здесь является источником, где вы можете увидеть его в действии).

Ответ 2

Amazon на самом деле рекомендует отредактировать промежуточную версию файла развертывания nginx. Есть несколько расположенных в /tmp/deployment/config/, один для редактирования общего "http" контекста, а затем несколько для настройки различных аспектов сервера.

Я хотел добавить функции кэширования к прокси-серверу по умолчанию, поэтому я написал файл конфигурации .ebextensions для замены #etc#nginx#conf.d#00_elastic_beanstalk_proxy.conf, который затем копируется на /etc/nginx/conf.d во время развертывания. Вы можете встроить файл, если он достаточно прост, но я поместил мой в S3, чтобы разные приложения и вытащили его и использовали. Здесь файл конфигурации:

commands: 
  01-get-nginx-conf-file:
    command: aws s3 cp s3://<bucket-name>/custom-nginx.conf /home/ec2-user

container_commands:
  01-replace-default-nginx-config:
    command: mv -f /home/ec2-user/custom-nginx.conf /tmp/deployment/config/#etc#nginx#conf.d#00_elastic_beanstalk_proxy.conf

Ответ 3

Другой способ расширения конфигурации Elastic Beanstalk nginx - создать файл в каталоге .ebextensions, названный, например, nginx.config, со следующим содержимым:

    files:
      "/etc/nginx/conf.d/000_my_config.conf":
      content: |
        upstream nodejsserver {
          server 127.0.0.1:8081;
          keepalive 256;
        }

        server {
          listen 8080;

          location / {
            proxy_pass  http://nodejsserver;
            proxy_set_header   Connection "";
            proxy_http_version 1.1;
            proxy_set_header        Host            $host;
            proxy_set_header        X-Real-IP       $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
          }

          location /myconfig {
            proxy_pass http://my_proxy_pass_host;
          }
        }

/etc/nginx/conf.d/000_my_config.conf - это имя файла, которое будет создано на экземплярах EC2 с эластичным beanstalk. По умолчанию эта конфигурация находится в файле /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf. Поэтому, если вы префикс 000, это гарантирует, что ваша конфигурация будет учитываться в первую очередь.

Содержимое было скопировано из конфигурации nginx по умолчанию (/etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf снова), а затем настроено с моей собственной конфигурацией.

Ответ 4

Более чистым подходом является наличие файлов nginx.conf с желаемыми изменениями в подпапке в .ebextensions:

Теперь вы можете поместить файл nginx.conf в папку .ebextensions/nginx, чтобы переопределить конфигурацию Nginx. Вы также можете разместить файлы конфигурации в папке .ebextensions/nginx/conf.d, чтобы включить их в конфигурацию Nginx, предоставляемую платформой.

Источник