Распределение нагрузки ASP.NET MVC с помощью nginx.Auth теряется после смены конечного пункта назначения - PullRequest
0 голосов
/ 27 августа 2018

У меня есть приложение ASP.NET MVC на IIS.При развертывании новой версии кода мое приложение не отвечает на запросы от 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 config- proxy_pass до upstream и содержит следующие параметры:

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 голосов
/ 30 августа 2018

Я преодолел эту проблему.

У меня была операция WebSecurity.Logout() в коде, если обработано User.UserInRole(..) с исключением.

Я прокомментировал эту строку, и теперь все работает хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...