Как изменить конфигурацию 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.
Ответы
Ответ 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, предоставляемую платформой.
Источник