2016-09-01 8 views
0

AWSでは、Elastic Load Balancerの背後にあるDockerized Nodeアプリケーションを実行している複数のEC2インスタンスを展開するようにElastic BeanStalkを設定しました。また、SSLを介してhttps経由でサイトを読み込んでAWS証明書マネージャを使用しています。自動的に自動的に私はこれを達成するためにnginxのを使用しようとしていますHTTPS Docker、Node、Nginx Configの問題を伴うAWS EB

へのHTTPリダイレクトwww.domain.com

  • に非WWWをリダイレクト

    1. 、および:ここで私が達成しようとしているものです私は自動化するように処理したいので、スケーリング規則によってスピンアップされる新しいインスタンスには、この構成が自動的に含まれます。

      いくつかの調査の後、私は一部の人がプロジェクトルートの.ebextensions/nginx.configファイルでこれを達成していることがわかりました。

      は、ここに私のnginxのオーバーライドの設定ファイルである:

      files: 
          /etc/nginx/sites-available/elasticbeanstalk-nginx-docker-proxy.conf: 
          mode: "000644" 
          owner: root 
          group: root 
          content: | 
           map $http_upgrade $connection_upgrade { 
             default  "upgrade"; 
             ""   ""; 
            } 
            server { 
           listen 80; 
           return 301 https://www.$host$request_uri; 
      
            } 
      
            server { 
             listen 443 ssl; 
      
            gzip on; 
            gzip_comp_level 4; 
            gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; 
      
             if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") { 
              set $year $1; 
              set $month $2; 
              set $day $3; 
              set $hour $4; 
             } 
             access_log /var/log/nginx/healthd/application.log.$year-$month-$day-$hour healthd; 
      
             access_log /var/log/nginx/access.log; 
      
             location/{ 
              proxy_pass   http://docker; 
              proxy_http_version 1.1; 
      
              proxy_set_header Connection   $connection_upgrade; 
              proxy_set_header Upgrade    $http_upgrade; 
              proxy_set_header Host    $host; 
              proxy_set_header X-Real-IP   $remote_addr; 
              proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for; 
             } 
            } 
      

      ノードアプリはポート3000上でドッキングウィンドウコンテナ内で実行され、そのポートが露出しています。

      4つの質問:

      1. これは、AWSでこれを行うには正しい方法は何ですか?
      2. このnginx設定ファイルは正しいですか(wwwとhttpsにリダイレクトするため)?
      3. ここでNGINX設定で別のSSL証明書が必要ですか?私はAWS Certification Mangerを使用してドメインレベルで1つを持っています
      4. リダイレクトは健全性をチェックし、自動展開を強制終了しますか?

      もちろん、最大の問題はAWSにこの設定を受け入れることができないことです。私は間違って何をしていますか?

  • 答えて

    1

    あなたのNginx設定をかなり単純化するAWS組み込み機能を使用する方がずっと簡単だと思います。 AWS証明書マネージャで

    証明書

    は、あなたのEC2インスタンスをその構成の一部としてELBへの証明書をロードし、ではないでしょう。リダイレクションのアペックスドメイン/ SSL

    リダイレクト

    ACM SSL Certificates for Elastic Load Balancers


    、DNSにELBにRoute53 wwwエイリアスリダイレクトを使用します。 ELBには、httphttpsの設定がリダイレクトされています。 http(s)://yourdomain.comwwwまたはサブドメインなし)はAPEXドメインと呼ばれ、いくつかの制限があることに注意してください。 ELBにaliasを使用することは、AWSでサポートされているリダイレクト方法です。

    Q.ゾーンの頂点をポイントすることはできますか(example.comとwww.exampleの比較)。com)私のElastic Load Balancerで?

    はい。 Amazon Route 53には、ゾーンエイペックス(example.com)のDNS名をELB DNS名(elb1234.elb.amazonaws.com)にマッピングできる「エイリアス」レコードという特別なタイプのレコードがあります。 Amazon Elastic Load Balancerに関連付けられたIPアドレスは、拡大、縮小、ソフトウェアの更新のためにいつでも変更できます。ルート53は、ロードバランサの1つまたは複数のIPアドレスを持つエイリアスレコードの各要求に応答します。 ELBロードバランサにマップされたエイリアスレコードへのクエリは無料です。これらのクエリは、Amazon Route 53使用状況レポートに「Intra-AWS-DNS-Queries」としてリストされています。お返事のための

    Amazon Route 53 FAQs

    +0

    感謝。私はすでにAWS証明書マネージャーとルート53を使用しています。私はELBエイリアスへのAレコードを持っています。私のドメインのwww以外のものに対してCNAMEを設定していますが、これは自動リダイレクトではありません。実際にユーザーをリダイレクトするオプションはRoute 53では表示されません。 DNSは正しく解決されていますが、URLは実際には変更されていません。これを行うにはRoute 53の設定オプションがいくつかありますか? –

    +0

    既にRoute 53を使用している場合は、独自の別名「レコード」を使用してこの問題を解決できます。標準的なDNSでは、これを全く行うことはできず、Webサイトに301リダイレクトを送信させる必要があります。もちろん、301のリダイレクトを送信する必要があります。または、いくつかのリクエストがwwwなしで入力されるという事実を扱う必要があります。 これを行う最も簡単な方法は、裸のドメインの名前を持つS3バケットを設定し、example.comからwww.example.comにリダイレクトするようにバケットプロパティを設定し、Route 53に別名を作成することですそのS3バケットを指し示す裸のドメイン名。 –

    関連する問題