Как изменить файл nginx.conf во время развертывания AWS Elastic Beanstalk
Я разработал Django-приложение и развернул его в среде Elastic Beanstalk (с nginx в качестве прокси-сервера).
Платформа Linux должна быть первой версии, потому что если я выполню команду: cat /etc/os-release
в терминале экземпляра EC2, управляемого EB, я получаю такую информацию:
Кроме того, я дважды подтвердил, что это Linux 1, а не Linux 2, зайдя в консоль EC2:
Теперь, уточнив, какую платформу Linux я использую в экземпляре EC2, перейдем к решению проблемы.
Когда я получаю доступ к экземпляру EC2 и захожу в файл etc/nginx/nginx.conf, я вижу следующее:
Теперь я хочу увеличить настройки таймаута в разделе "server" файла nginx.conf.
Я также хотел бы увеличить client_max_body_size
каким-то образом.
Я прочитал в некоторой документации в Интернете, что я должен создать папку .ebextensions в корне моего проекта Django с некоторыми .config-файлами внутри, а также файл buildspec.yml в корневой папке проекта.
Вот где я разместил свои файлы:
my_project
|- .ebextensions
| |- django.config
| |- instances.config
| |- nginx.config
|- buildspec.yml
|- manage.py
|...
Вот содержание каждого файла:
django.config:
container_commands:
01_makemigrations:
command: "source /var/app/venv/*/bin/activate && python3 manage.py makemigrations --noinput"
leader_only: true
02_migrate:
command: "source /var/app/venv/*/bin/activate && python3 manage.py migrate --noinput"
leader_only: true
03_collectstatic:
command: "source /var/app/venv/*/bin/activate && python3 manage.py collectstatic --noinput"
leader_only: true
instances.config:
option_settings:
aws:elasticbeanstalk:container:python:
WSGIPath: "my_project.wsgi:application"
aws:elbv2:listener:443:
ListenerEnabled: 'true'
Protocol: HTTPS
SSLCertificateArns: arn:aws:acm:<region>:<user_id>:certificate/<certificate_id>
aws:elasticbeanstalk:environment:proxy:staticfiles:
/static: staticfiles
aws:elbv2:loadbalancer:
IdleTimeout: 900
nginx.config:
files:
"/etc/nginx/conf.d/nginx.custom.conf":
mode: "644"
owner: "root"
group: "root"
content: |
client_header_timeout 900;
client_body_timeout 900;
send_timeout 900;
proxy_connect_timeout 900;
proxy_read_timeout 900;
proxy_send_timeout 900;
client_max_body_size 500M;
container_commands:
01_restart_nginx:
command: "sudo service nginx reload"
buildspec.yml:
version: 0.2
phases:
install:
runtime-versions:
python: 3.11
commands:
- echo Installing dependencies...
- pip install -r requirements.txt
pre_build:
commands:
- echo Running migrations...
- python manage.py migrate --noinput
build:
commands:
- echo Build completed on `date`
artifacts:
files:
- '**/*'
Но после развертывания приложения в среде Elastic Beanstalk я всегда вижу конфигурацию nginx по умолчанию.
Итак, мой вопрос заключается в том, как я могу изменить конфигурацию сервера nginx во время развертывания, чтобы увеличить следующие параметры:
- client_max_body_size 500M;
- client_header_timeout 900;
- client_body_timeout 900;
- send_timeout 900;
- proxy_connect_timeout 900;
- proxy_read_timeout 900;
- proxy_send_timeout 900;