2017-01-10 7 views
0

Я пишу веб-сайт с Flask. Для проверки подлинности я использую Flask-Secuirty. Я использую nginx + gunicorn для его развертывания.фляжка-защита не может работать с оружием с несколькими рабочими?

Конфигурация Nginx следующим образом:

server{ 
    listen 80; 
    server_name project.example.com; 
    location/{ 
     proxy_pass http://127.0.0.1:5000; 

     proxy_set_header Host $host; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forward-For $proxy_add_x_forwarded_for; 
    } 
} 

И я использую gunicorn -w worker_number -k gevent run:app -p app.pid -b 127.0.0.1:5000 начать gunicorn.

Если worker_number - 1, все в порядке.

Если worker_number больше 1, как 3, я не могу войти в систему с помощью Flask-Security.

Выход сервера сказал, что запрос на вход в систему - 200. Но сервер перенаправляет меня на страницу входа еще раз.

После некоторого поиска я не могу найти прямую причину этого. И я предполагаю, что это может вызвать SERVER_NAME config of Flask или неправильное использование Flask-SQLAlchemy.

Есть ли кто-нибудь раньше встретил эту ситуацию? Пожалуйста, дайте мне несколько советов.

ответ

0

Используйте что-то наподобие Flask-Session и используйте Redis в качестве магазина сеансов. Я не уверен, как работает Flask-Security, но я полагаю, что он полагается на сеансы Flask, и в этом случае он решит проблему переключения сеанса пользователя между серверами приложений.