Comment changer la configuration de nginx en amazon élastique en exécutant une instance de docker

Une fois connecté et le cookie défini, j’obtiens l’erreur 502. Lorsque je lis le journal, j’obtiens l’erreur suivante:

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: 

Après quelques googler rapidement j’ai trouvé: http://developernote.com/2012/09/how-i-fixed-nginx-502-bad-gateway-error/

et je veux essayer de mettre fastcgi_buffers et fastcgi_buffer_size à une valeur différente. Mais comment définir la variable nginx en amazon elasticbeanstalk?

Le serveur nginx est avant mon instance de docker.

Je devais également modifier la configuration nginx.

  1. Créez un script qui modifie la configuration nginx (vous voulez probablement /etc/nginx/sites-enabled/elasticbeanstalk-nginx-docker.conf ) et redémarre le service nginx ( service nginx restart ).
  2. Vous devez exécuter ce script après l’écriture de ce fichier de configuration nginx, qui est exécuté après l’exécution des extensions électroniques normales. Ceci n’est pas documenté, mais Evan a partagé comment faire ici : essentiellement, vous utilisez une ebextension pour copier le script dans un répertoire avec des hooks exécutés au bon moment.

Un exemple de configuration d’ebextension est .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" 

Cela fonctionne bien maintenant pour mon projet ( voici la source où vous pouvez le voir en action).

Amazon recommande en effet de modifier la version de transfert du fichier de déploiement nginx. Il y en a plusieurs dans /tmp/deployment/config/ , une autre pour éditer le contexte ‘http’ général, et quelques unes pour configurer différents aspects du serveur.

Je voulais attacher une fonctionnalité de mise en cache au serveur proxy par défaut, alors j’ai écrit un fichier de configuration .ebextensions pour remplacer #etc#nginx#conf.d#00_elastic_beanstalk_proxy.conf , qui est ensuite copié dans /etc/nginx/conf.d pendant déploiement. Vous pouvez intégrer le fichier si c’est assez simple, mais je mets le mien dans S3 pour que les différentes applications le retirent et l’utilisent. Voici le fichier de configuration:

 commands: 01-get-nginx-conf-file: command: aws s3 cp s3:///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 

Une autre façon d’étendre Elastic Beanstalk nginx config consiste à créer un fichier dans le répertoire .ebextensions , nommé par exemple nginx.config avec le contenu suivant:

  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 est le nom de fichier qui sera créé sur les instances Elastic Beanstalk EC2. Par défaut, cette configuration se trouve dans le fichier /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf . Donc, si vous préfixez 000, cela vous garantit que votre configuration sera prise en compte en premier.

Le contenu a été copié à partir de la configuration nginx par défaut ( /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf ), puis personnalisé avec ma propre configuration.

Une approche plus propre (si vous utilisez la plate-forme Java ou Go sur ELB) consiste à avoir des fichiers nginx .conf avec les modifications souhaitées dans un sous-dossier de .ebextensions:

Vous pouvez maintenant placer un fichier nginx.conf dans le dossier .ebextensions / nginx pour remplacer la configuration Nginx. Vous pouvez également placer des fichiers de configuration dans le dossier .ebextensions / nginx / conf.d afin de les inclure dans la configuration Nginx fournie par la plate-forme.

La source