7

Я запускаю приложение rails на экземплярах Ruby 2.0/Puma и пытаюсь настроить конфигурацию nginx. Мне нужно увеличить разрешенный размер запроса, чтобы разрешить загрузку файлов. Я нашел некоторые другие сообщения, которые приводят меня, чтобы добавить это к моему .ebextensions:Настройка конфигурации Nginx в AWS Elastic Beanstalk

files: 
    "/etc/nginx/conf.d/proxy.conf" : 
    mode: "000755" 
    owner: root 
    group: root 
    content: | 
     client_max_body_size 70M; 

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

ответ

8

Я нашел способ перезагрузить nginx после развертывания, используя недокументированную технику для запуска сценариев после развертывания. Я добавил это в моих .ebextensions:

files: 
    "/opt/elasticbeanstalk/hooks/appdeploy/post/03_restart_nginx.sh": 
    mode: "000755" 
    owner: root 
    group: root 
    content: | 
     #!/usr/bin/env bash 
     service nginx restart 
1

это моя конфигурация и работала для меня. Вы должны включить его в блок http.

files: 
    "/etc/nginx/conf.d/proxy.conf" : 
    mode: "000755" 
    owner: root 
    group: root 
    content: | 
     http { 
      client_max_body_size 20M; 
     } 
+2

Когда я делаю это, я получаю «Nginx: [Экстрен]„HTTP“директива здесь не допускается в /etc/nginx/conf.d/proxy.conf:1» при попытке вручную перезапустить Nginx. Возможно, мы находимся в разных версиях nginx. Во всяком случае, моя конфигурация выше работает отлично для меня, но только после того, как я ssh на сервер и вручную перезапустите nginx. По сути, проблема в том, что nginx не собирает новую конфигурацию после развертывания. – Graham

4

Чтобы перезагрузить Nginx конфигурации, вы можете использовать container_commands

От http://www.infoq.com/news/2012/11/elastic-beanstalk-config-files:

Ключ container_commands позволяет выполнять команды для контейнера. Они запускаются после того, как приложение и веб-сервер были настроены, и приложение было извлечено, но до развертывания приложения. container_commands обрабатываются в лексикографическом порядке по имени.

container_commands: 
    01_reload_nginx: 
    command: "service nginx reload" 
0

Я получил это работает, как это. Не нужно перезапускать или перезагружать nginx, поскольку commands (а не container_commands) руны перед развертыванием приложения.

commands: 
    01-get-nginx-conf-file: 
    command: "aws s3 cp s3://somepath/nginx.conf /home/ec2-user" 
    02-replace-default-nginx-config: 
    command: "cp /home/ec2-user/nginx.conf /etc/nginx/nginx.conf" 
Смежные вопросы