2016-08-03 13 views
2

SSL経由でサイトを要求し、https://example.com展開asp.netコアMVC - ノンセキュアなログインページにリダイレクトし

を認証されない場合は、私は私がnginxのランニングいるhttp://example.com/Account/Login

にリダイレクトエッジをSSLを終了させるロードバランサとして使用し、IISへのHTTPとして要求をプロキシします。

nginxのコンフィグ

server { 
    server_name example.com; 
    listen 443 ssl; 

    location/{ 
     proxy_pass http://cluster1; 
     proxy_set_header Host $host; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     #proxy_set_header X-Forwarded-Proto $scheme; 
    } 

}

あなたは私が私のMVCアプリの起動では

をX-転送さ-のために設定し、X-転送さ-プロトヘッダよ見ることができるように私が持っていますこれで設定します

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
    { 

     app.UseForwardedHeaders(new ForwardedHeadersOptions 
     { 
      ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto, 
      ForwardLimit = null, 
      RequireHeaderSymmetry = false 
     }); 

私は[RequireHttps]属性を自分のコントローラに持っています。

私には何が欠けていますか?

答えて

0

更新.NETCore 1.0.1、1.0.2、1.1.0:

新しい更新.NETCore 1.0.1、1.0.2、1.1.0を発行し

アップデートを固定思えます回避策:

それはUbuntuの16.04 LTS/nginxの/ 1.10.0

0123上で私たちのために働くの答え https://serverfault.com/a/516382/379823

からの根本的な原因を理解します

マップを追加します。

map $http_x_forwarded_proto $thescheme { 
    default $scheme; 
    https https; 
} 

と新しいスキームを使用するproxy_set_headerラインを変更:

# proxy_set_header X-Forwarded-Proto $scheme; 
proxy_set_header X-Forwarded-Proto $thescheme; 

前の回避策:

我々は同じ問題を持っています。私たちはNGINX redirect HTTP => HTTPS(二重リダイレクトを取得します)で回避策を講じます。

私はちょうどdocs.asp.netをもう一度読んだだけで、HTTP => HTTPSがこの時点でリダイレクトされているようです。

server { 
    listen *:80; 
    add_header Strict-Transport-Security max-age=15768000; 
    return 301 https://$host$request_uri; 
} 

がここにドキュメントを参照してくださいSecuring our application/Configure SSL

+0

あなたがシナリオの多くでは、二重リダイレクトを取得するので、私は理想的な同じことをやってしまったが、そのありません。 – Tom

関連する問題