Nginx 反向代理重定向到帐户/登录

Posted

技术标签:

【中文标题】Nginx 反向代理重定向到帐户/登录【英文标题】:Nginx reverse proxy re-direct to Account/Login 【发布时间】:2018-07-22 12:32:25 【问题描述】:

重定向到标准 MVC“登录”页面不起作用。

我使用 Visual Studio 2017 在 Windows 下开发 - 这是一个标准的模板化 Asp.Net Core 2.0 MVC 包。

在 Windows 下本地运行良好。

但是,当我发布到 Ubuntu 16.04-x64 机器时,重定向失败。

我有 nginx 提供反向代理如下:

server listen 24147; location / proxy_pass http://localhost:5001; 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;

在我的 Startup.cs 中:

public void Configure(IApplicationBuilder app, IHostingEnvironment env) var forwardedHeadersOptions = new ForwardedHeadersOptions ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto // ForwardedHeaders = ForwardedHeaders.All (also tried) ; forwardedHeadersOptions.KnownNetworks.Clear(); // Tried both with and forwardedHeadersOptions.KnownProxies.Clear(); // without these lines app.UseForwardedHeaders(forwardedHeadersOptions); // ..... app.UseAuthentication(); // .....

程序.cs:

public static IWebHost BuildWebHost(string[] args) return WebHost.CreateDefaultBuilder(args) .UseStartup() .UseUrls("@987654321@") .Build();

网页中的所有超链接都是正确的,例如:"myserver.com:24147/Home/Online",但在尝试访问需要授权的页面时重定向会得到“404 Not Found”。

在 Ubuntu 下使用的重定向地址是"myserver.com/Account/Login?ReturnUrl=%2FHome%2FOnline"(注意缺少的端口号)

在 Windows 下使用的地址是"localhost:5001/Account/Login?ReturnUrl=%2FHome%2FOnline"(正确,带有端口号)

我已经搜索了 Google 和 *** 的解决方案,并尝试了所有提出的配置 - 均无济于事。

非常感谢任何帮助。

【问题讨论】:

你能分享一个类似的 Fiddler 跟踪吗? @Tratcher:感谢您鼓励我创建 Fiddler 跟踪。它指导我解决了下面概述的问题。 【参考方案1】:

这个问题根本不是asp.net Core框架的问题,而是Nginx反向代理设置的内容。

Nginx 在其 302(重定向)“Location”标头中省略了端口号。

通过更改反向代理配置文件中的一行来解决此问题:

发件人:

proxy_set_header Host $host;

收件人:

proxy_set_header Host $host:$server_port;

现在一切都按预期工作了。

【讨论】:

以上是关于Nginx 反向代理重定向到帐户/登录的主要内容,如果未能解决你的问题,请参考以下文章

nginx 反向代理时丢失端口的解决方案

nginx 反向代理时丢失端口的解决方案

nginx 反向代理时丢失端口的解决方案

nginx实现内容重定向的两种方式:rewrite和反向代理

在反向代理的背后,Spring Security登录重定向到错误的端口

nginx应用 | 反向代理,统一鉴权,目录重定向