gpt4 book ai didi

ssl - 在执行 SSL 终止的 NGINX 后面部署 asp.net core mvc - 重定向到非安全登录页面

转载 作者:太空宇宙 更新时间:2023-11-03 13:06:46 29 4
gpt4 key购买 nike

当通过 SSL 请求站点且未通过身份验证时 https://example.com

我被重定向到 http://example.com/Account/Login

我在边缘运行 NGINX 作为负载均衡器,终止 SSL 并将请求作为 http 代理到 IIS。

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;
}

如您所见,我正在设置 X-Forwarded-For 和 X-Forwarded-Proto header

在我的 MVC 应用程序启动中,我在配置中有这个

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

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

我的 Controller 上有 [RequireHttps] 属性。

我错过了什么?

最佳答案

更新 .NETCore 1.0.1、1.0.2、1.1.0:

新更新 .NETCore 1.0.1、1.0.2、1.1.0 似乎解决了这个问题

更新解决方法:

从答案https://serverfault.com/a/516382/379823了解根本原因

它适用于 Ubuntu 16.04 LTS/Nginx/1.10.0

添加 map :

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 重定向 HTTP => HTTPS(将获得双重重定向)来解决问题。

刚刚又仔细看了一遍docs.asp.net,这次好像redirect HTTP => HTTPS是唯一的方法。

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

请在此处查看文档 Securing our application / Configure SSL

关于ssl - 在执行 SSL 终止的 NGINX 后面部署 asp.net core mvc - 重定向到非安全登录页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38748989/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com