7

Sto eseguendo un'applicazione rota su istanze di Ruby 2.0/Puma e sto cercando di personalizzare la configurazione di nginx. Devo aumentare la dimensione della richiesta consentita per consentire il caricamento di file. Ho trovato alcuni altri posti che mi hanno portato per aggiungere questo ai miei .ebextensions:Personalizzazione della configurazione Nginx in Beanstalk AWS Elastico

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

che fa creare il file come previsto, ma non sembra funzionare fino a quando ho riavviato manualmente nginx. Per questo motivo, ho cercato di capire un modo per riavviare nginx con i comandi .ebextensions, ma non ho avuto alcun successo. Qualcuno sa di un modo per riavviare nginx con .ebextensions o conoscere un approccio migliore per risolvere questo problema?

risposta

8

ho trovato un modo per riavviare nginx dopo la distribuzione utilizzando una tecnica non documentata per l'esecuzione di script post-distribuzione. Ho aggiunto questo ai miei .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

questa è la mia configurazione e ha funzionato per me. Devi includerlo all'interno del blocco http.

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

Quando lo faccio, ottengo "nginx: [Emerg] 'http' direttiva non è permesso qui a /etc/nginx/conf.d/proxy.conf:1" quando si tenta di riavviare manualmente nginx. Forse siamo su diverse versioni di nginx. In ogni caso, la mia configurazione di cui sopra funziona bene per me, ma solo dopo aver eseguito ssh sul server e riavviare manualmente nginx. Fondamentalmente, il problema è che nginx non sta raccogliendo la nuova configurazione dopo una distribuzione. – Graham

4

per ricaricare la configurazione nginx, è possibile utilizzare container_commands

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

La chiave container_commands permette di eseguire comandi per il vostro contenitore. Vengono eseguiti dopo che l'applicazione e il server Web sono stati configurati e l'applicazione è stata estratta, ma prima che l'applicazione venga distribuita. I comandi contenitore vengono elaborati in ordine lessicografico per nome.

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

ho preso a lavorare in questo modo. Non è necessario riavviare o ricaricare nginx poiché le rune commands (e non container_commands) PRIMA della distribuzione dell'applicazione.

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"