web-dev-qa-db-ja.com

Dockerインスタンスを実行しているAmazon Elastic Beanstalkでnginx設定を変更する方法

ログインしてCookieを設定すると、エラー502が発生します。ログを読み取ると、エラーが発生します。

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:

いくつかの高速グーグルの後、私は見つけました: http://developernote.com/2012/09/how-i-fixed-nginx-502-bad-gateway-error/

そして、fastcgi_buffersとfastcgi_buffer_sizeを異なる値に設定しようとしています。しかし、Amazon elasticbeanstalkでnginxに変数を設定するにはどうすればよいですか?

Nginxサーバーは、私のdockerインスタンスの前にあります。

27
Erik Axelsson

また、nginx設定を変更する必要がありました。

  1. Nginx構成を変更するスクリプトを作成します(おそらく/etc/nginx/sites-enabled/elasticbeanstalk-nginx-docker.conf)nginxサービスを再起動します(service nginx restart)。
  2. このnginx構成ファイルが書き込まれた後、つまり通常のebextensionsが実行された後、そのスクリプトを実行する必要があります。これは文書化されていませんが、Evanはこれを行う方法を共有しました here :基本的には、ebextensionを使用して、適切なタイミングで実行されるフック付きのディレクトリにスクリプトをコピーします。

Ebextension設定の例は.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"

これは私のプロジェクトでうまく機能しています( here は実際に動作するソースです)。

21
svenkreiss

Amazonは、実際に、nginxデプロイメントファイルのステージングバージョンを編集することを推奨しています。 /tmp/deployment/config/には、一般的な「http」コンテキストを編集するためのものと、サーバーのさまざまな側面を構成するためのものがいくつかあります。

デフォルトのプロキシサーバーにキャッシング機能をアタッチしたかったので、.ebextensions構成ファイルを作成して#etc#nginx#conf.d#00_elastic_beanstalk_proxy.confを置き換えます。これは、展開中に/etc/nginx/conf.dにコピーされます。ファイルが十分に単純であればインライン化できますが、S3にファイルを配置して、さまざまなアプリケーションを作成し、それをプルダウンして使用します。構成ファイルは次のとおりです。

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

Elastic Beanstalkのnginx構成を拡張する別の方法は、.ebextensionsディレクトリ、たとえばnginx.config次のコンテンツ:

    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は、Elastic Beanstalk EC2インスタンスで作成されるファイル名です。デフォルトでは、この構成はファイル/etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf。したがって、接頭辞000を付けると、設定が最初に考慮されることが保証されます。

コンテンツは、デフォルトのnginx設定(/etc/nginx/conf.d/00_elastic_beanstalk_proxy.confもう一度)、その後、独自の構成でカスタマイズします。

19
jsebfranck

よりクリーンなアプローチ(JavaまたはElastic BeanstalkのGoプラットフォームを使用している場合)は、.ebextensionsのサブフォルダーに希望する変更を含むnginx .confファイルを含めることです。

これで、nginx.confファイルを。ebextensions/nginxフォルダーに配置して、Nginxの設定を上書きできます。また、構成ファイルを。ebextensions/nginx/conf.dフォルダーに配置して、プラットフォームが提供するNginx構成に含めることもできます。

ソース

5
AngryUbuntuNerd