Как изменить файл nginx.conf во время развертывания AWS Elastic Beanstalk

Я разработал Django-приложение и развернул его в среде Elastic Beanstalk (с nginx в качестве прокси-сервера).

Платформа Linux должна быть первой версии, потому что если я выполню команду: cat /etc/os-release в терминале экземпляра EC2, управляемого EB, я получаю такую информацию:

os-release file of the EC2 instance

Кроме того, я дважды подтвердил, что это Linux 1, а не Linux 2, зайдя в консоль EC2:

Linux platform of the EC2 instance

Теперь, уточнив, какую платформу Linux я использую в экземпляре EC2, перейдем к решению проблемы.

Когда я получаю доступ к экземпляру EC2 и захожу в файл etc/nginx/nginx.conf, я вижу следующее:

Content of the nginx.conf file

Теперь я хочу увеличить настройки таймаута в разделе "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;
Вернуться на верх