2016-10-16 19 views
0

私のASP.NET Core 1.0アプリケーションでは、自分のログイン画面を提供するためにCookieミドルウェアを使用しています。 https://docs.asp.net/en/latest/security/authentication/cookie.htmlASP.NETコア認証ポート番号

Startup.cs

... 
app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    AuthenticationScheme = "MyCookieMiddlewareInstance", 
    LoginPath = new PathString("/Config/Login"), 
    AutomaticAuthenticate = true, 
    AutomaticChallenge = true, 
}); 
... 

私のプロジェクトが今終了し、私はLinux環境にそれを公開している:私は、ASP.NETのコアのドキュメントを追いました。私はASP.NETアプリケーションに要求を転送するためにリバースプロキシとしてNginxを設定しました。 私の設定では、ポート5000の受信トラフィックが、自分のWebアプリケーションがリッスンしている現在のポートに転送されます。

の/ etc/nginxの/サイト利用可能/デフォルト

server { 
    listen 5000; 
    location/{ 
     proxy_pass http://localhost:4007; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection keep-alive; 
     proxy_set_header Host $host; 
     proxy_cache_bypass $http_upgrade; 
    } 
} 

すべてはそれが必要として動作します。許可されていないページにアクセスしようとすると、アプリケーションの設定済みの認証オプションによってページがログインページに転送されます。残念ながら、それはURLからポート番号を削除します。手動でポート番号を追加すると、それが機能します。

http:// 'ip-server':5000/Configを要求すると、アプリケーションはhttp:// 'ip-server':5000/Config/Loginにリダイレクトする必要がありますか?ReturnUrl =%2FConfigログインしていません。代わりに、http:// 'ip-server'/Config/Login?ReturnUrl =%2FConfigに私をリダイレクトします。これにより、存在しないページにリダイレクトされます。

URLにポート番号を保持するように変更するにはどうすればよいですか(Nginxのアプリケーションでは?)私はまだインターネット上で何も見つけていない。

答えて

1

私はこの問題を解決しました。私はnginxの構成で$http_host代わりの$hostを使用するために必要な:

server { 
    listen 5000; 
    location/{ 
     proxy_pass http://localhost:4007; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection keep-alive; 
     proxy_set_header Host $http_host; 
     proxy_cache_bypass $http_upgrade; 
    } 
} 

は今リダイレクトは、URLに存在するようポートを使用して、正しいです。