我有一个使用ASP.NET Core构建的示例MVC Web应用程序 . 我还启用了帐户确认,因此当用户注册时,他们会收到确认电子邮件 . 当我在我的开发机器上使用Kestrel服务器在本地运行它时,我的Web应用程序运行良好,帐户确认正常工作(http://localhost:5000) .
现在我已经使用反向代理(https://musicstore.paul.kim)将我的Web应用程序发布到运行Apache Web服务器的Ubuntu服务器上 . 我已经获得了musicstore.paul.kim的免费SSL证书,使用Let 's Encrypt. I' ve设置反向代理将请求从http://localhost:5000转发到https://musicstore.paul.kim . 一切似乎运行正常,除了帐户确认不起作用 . 当我尝试通过输入电子邮件和创建密码来注册新用户时,我会通过SendGrid收到一封电子邮件,其中包含确认我的电子邮件的链接 . 当我点击该链接时,我被带到我的网络应用程序并显示错误消息而不是确认电子邮件 . 我查看了我的日志文件,错误消息是"Microsoft.AspNetCore.Identity.UserManager[9] VerifyUserTokenAsync() failed with purpose: EmailConfirmation for user 54a1c48c-4af7-454a-9c57-6b78c671be56."
为什么使用反向代理确认帐户确认不适用于Apache?
我怎样才能让它运转起来?
1 回答
问题在于我们丢失了客户端的原始请求协议 . 我们可以通过将此代码添加到startup.cs中的“Configure”来处理它:
此外,您必须在vhost文件中配置apache / nginx:
这应该够了吧! ;-)