web-dev-qa-db-fra.com

Comment changer la configuration Nginx dans Amazon Elastic Beanstalk exécutant une instance Docker

Une fois que je me suis connecté et que le cookie est défini, j'obtiens l'erreur 502. Lorsque je lis le journal, j'obtiens l'erreur:

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 recherches rapides sur Google, j'ai trouvé: http://developernote.com/2012/09/how-i-fixed-nginx-502-bad-gateway-error/

et je veux essayer de définir fastcgi_buffers et fastcgi_buffer_size sur une valeur différente. Mais comment définir une variable sur nginx dans Amazon elasticbeanstalk?

Le serveur nginx est avant mon instance de docker.

27
Erik Axelsson

J'ai également eu besoin de modifier la configuration de nginx.

  1. Créez un script qui modifie la configuration de 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, c'est-à-dire 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 extension électronique pour copier le script dans un répertoire avec des hooks qui est exécuté au bon moment.

Un exemple de configuration 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 ( ici est la source où vous pouvez le voir en action).

21
svenkreiss

Amazon recommande en fait de modifier la version intermédiaire du fichier de déploiement nginx. Il y en a plusieurs à /tmp/deployment/config/, un pour éditer le contexte général 'http', puis quelques-uns pour configurer différents aspects du serveur.

Je voulais attacher une fonctionnalité de mise en cache au serveur proxy par défaut, j'ai donc écrit un .ebextensions fichier de configuration pour remplacer #etc#nginx#conf.d#00_elastic_beanstalk_proxy.conf, qui est ensuite copié dans /etc/nginx/conf.d pendant le déploiement. Vous pouvez incorporer le fichier si c'est assez simple, mais j'ai mis le mien dans S3 afin que différentes applications et le tirent vers le bas et l'utilisent. Voici le fichier de configuration:

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

Une autre façon d'étendre la configuration d'Elastic Beanstalk nginx consiste à créer un fichier dans le .ebextensions répertoire, 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 par défaut de nginx (/etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf), puis personnalisé avec ma propre configuration.

19
jsebfranck

Une approche plus propre (si vous utilisez la plate-forme Java ou Go sur Elastic Beanstalk)) consiste à avoir les fichiers nginx .conf avec vos modifications souhaitées dans un sous-dossier dans .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 plateforme.

Source

5
AngryUbuntuNerd