7

私はこの質問が以前に尋ねられていることを知っていますが、何も私のために働いているようです。私はそのようなこれらの質問に答え説明など、複数の異なるものを、試してみた:それらの弾力のあるBeanstalkのHTTPはHttpsにリダイレクト

How to get Elastic Beanstalk nginx-backed proxy server to auto-redirect from HTTP to HTTPS? Redirecting EC2 elb from http to https

いずれも動作するようには思えません。私はaws noobだから、私は設定ファイルの編集方法が完全にはわからない。

私のセットアップは以下の通りです:ポート8080上

  • ルート(それは私のWebSocketをが動作可能としてTCP/SSLを使用して)E​​lastic Beanstalkで(nginxの)
  • ELB port configuration with ACM certificateから53ポイント
  • nodejsアプリ(this articleからこれを得た)私の.ebextensionsフォルダ内の

私の現在のnginx.configファイル:

files: 
    "/tmp/deployment/config/#etc#nginx#conf.d#00_elastic_beanstalk_proxy.conf" : 
    mode: "000755" 
    owner: root 
    group: root 
    content: | 
     upstream nodejs { 
      server 127.0.0.1:8081; 
      keepalive 256; 
     } 
     server { 
      listen 8080; 
      set $fixedWWW ''; 
      set $needRedir 0; 
      # nginx does not allow nested if statements 
      # check and decide on adding www prefix 
      if ($host !~* ^www(.*)) { 
       set $fixedWWW 'www.'; 
       set $needRedir 1; 
      } 
      # what about that https? the traffic is all http right now 
      # but elastic load balancer tells us about the original scheme 
      # using $http_x_forwarded_proto variable 
      if ($http_x_forwarded_proto != 'https') { 
       set $needRedir 1; 
      } 
      # ok, so whats the verdict, do we need to redirect? 
      if ($needRedir = 1) { 
       rewrite ^(.*) https://$fixedWWW$host$1 redirect; 
      } 
      location/{ 
       proxy_pass http://nodejs; 
       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; 
      } 
      gzip on; 
     } 

しかし、これは何もしないようです。私はアイディアを使い果たした。私はステップや何かを欠いているかどうかは分かりませんが、何をすべきか分かりません。回避策として、私はanglejsのフロントエンドでhttps以外のリクエストをリダイレクトしていますが、これはあまりにもハッキリであり、リダイレクトの前にDOMの一部がレンダリングされます。リダイレクトするロードバランサにリダイレクトしたいと思います。

+0

を、あなたのnginxの構成が正しく見えます。これはx-forwarded-protoヘッダーをチェックしていて、 'https'でなければリダイレクトしています。裸のドメインからwwwサブドメインにリダイレクトされているようですが、それは機能していますか? nginxの設定が実際にあなたのbeanstalkサーバーに適用されていると確信していますか? –

+0

私は実際に、裸のドメインをルート53でwwwに指摘してから、wwwはEBを指しています。そのチェックは現時点では冗長です。このファイルが既定のファイルを上書きしているかどうかを確認するにはどうすればよいですか? – KDogg

+1

[あなたはKDoggを何しましたか](https://xkcd.com/979/)??私は同じ問題があります! –

答えて

2

WWW以外の接続やHTTPS以外の接続の両方のリダイレクトを実行しようとしているようです。 http:// - > https://の単純なケースを試してみましたか?

if ($http_x_forwarded_proto = "http") { 
    return 301 https://$host$request_uri; 
} 

時にはそれが2つのリダイレクト、WWWへのHTTPSにHTTPから1および非WWWから一つを介してそれを処理する方が簡単です。実際、あなたがHSTS(https-everywhere)経由であなたのサイトを登録しようとしているなら、このようなアプローチが必要です。

編集:また、ちょうどあなたの設定の最初の行に気づいた、あなたは直接nginxのファイルを注入しようとする場合があります:一見

files: 
    "/etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf" : 
関連する問題