使用nginx的ASP.NET MVC负载平衡。更改后端目标后身份验证丢失

时间:2018-08-27 09:45:10

标签: asp.net asp.net-mvc authentication nginx iis

我在IIS上有ASP.NET MVC应用程序。 当我部署新版本的代码时,我的应用程序不会响应10秒到几分钟的请求。这不好。 (也许您知道如何决定更容易?)

我将nginx放在IIS之前,并设置将所有请求代理到IIS应用程序。然后,我在IIS(1.dev和2.dev)中使用相同的代码制作了新应用。 Nginx通过轮循向两个应用程序设置请求。

所有功能均正常运行,但在一个正确的请求后,身份验证丢失。第二个响应收到auth错误。我检查了mvc中的表单身份验证如何制作身份验证cookie,发现其中一个.ASPXAUTH是用machineKey作为密钥的加密登录。

我生成了machineKey并将其设置为两个应用程序。当我将cookie .ASPXAUTH从一个应用程序(1.dev.domain.ru)设置为第二个应用程序(2.dev.domain.ru)且具有到期日期时-一切正常。

但是dev.domain.com-无法正常工作。

我给错了什么?

PS::在每个IIS应用程序中,绑定具有:

  • X.dev.domain.ru
  • dev.domain.ru X-1或2。

nginx配置-从proxy_passupstream,并包含以下参数:

location / {
  proxy_pass http://dev;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $remote_addr;
  proxy_set_header X-Forwarded-Proto $scheme;
  proxy_set_header X-Forwarded-Host $host;
}

1 个答案:

答案 0 :(得分:0)

我克服了这个问题。

如果WebSecurity.Logout()被异常处理,则我在代码中进行了User.UserInRole(..)操作。

我评论了这一行,现在一切正常。