使用OWIN Katana的覆盖请求方案

时间:2018-09-03 10:51:06

标签: asp.net-mvc owin katana

我们计划在HAProxy服务器后面以蓝色/绿色设置部署我们的MVC应用程序,并进行设置,以使SSL连接将在代理服务器处终止,并且代理和Web服务器之间的通信将通过http和使用内部主机名。

此方法的问题在于,有时我们的应用程序需要生成绝对URL(例如,在发送电子邮件时),并且生成的URL是http://internal.site.com而不是https://public.site.com

代理使用原始方案和主机名添加了X-Forwarded-Proto和X-Forwarded-Host头,因此我们希望使我们的应用程序使用它们来建立绝对URL。

如果您使用的是.Net Core,则有一些中间件解决方案,而我们使用这些解决方案自行尝试(尽管在.Net Standard中,它们不能直接与我们的项目一起使用)。我们已经完成了换出主机的工作,但是出于某种原因,这样做并不能代替方案(为简便起见,已简化):

app.Use((ctx, next) =>
                    {
                        //this works
                        ctx.Request.Host = HostString.FromUriComponent("public.mysite.com"); 
                        //this does nothing
                        ctx.Request.Scheme = "https"; 
                        return next();
                    });

这会在输出绝对URL时产生http://public.site.com

有人知道为什么不能覆盖该计划或我如何做我想做的事吗?

0 个答案:

没有答案