У меня есть Kibana (часть стека elasticsearch), работающая на xx.xxx.xxx.xxx:5601. Поскольку Kibana не имеет собственной аутентификации, я пытаюсь включить ее в свою настройку входа в флягу. Другими словами, если кто-то попытается посетить xx.xxx.xxx.xxx:5601, мне нужно, чтобы страница была перенаправлена на мою страницу входа во флягу. Я могу использовать декоратор @login_required для URL-адреса, чтобы добиться этого... но я не знаю, как настроить URL-адрес маршрута фляги для обработки порта 5601, поскольку он должен начинаться с косой черты.
@app.route("/")
@login_required
Какие-либо предложения?
РЕДАКТИРОВАТЬ @senaps: приложение 1 - это фляга, которая работает на 0.0.0.0, порт 9500, приложение 2 - это Kibana на основе node.js, которую я могу выбрать для запуска на локальном порту 5601, а затем выставить через nginx, или я могу напрямую опубликовать на IP:5601. В любом случае, он работает как «служба» при запуске и постоянно прослушивает 5601.
Постановка проблемы - приложение 2 должно быть заключено под логином приложения 1. Я не хочу использовать nginx для аутентификации приложения 2, а скорее для настройки входа в флягу приложения 1.
В настоящее время я использую gunicorn для обслуживания приложения flask и настроил обратный прокси-сервер nginx для маршрутизации к приложению flask. Следующее руководство: цифровой океан
Вариант 1. Приложение Node.js Kibana открыто для публики по IP: 5601.
server {
listen 80;
server_name example.com;
location / {
include proxy_params;
proxy_pass http://unix:/home/ubuntu/myproject/myproject.sock;
}}
Если я посещаю IP, он переходит в мое приложение для фляг, отлично. Я не могу понять, как обрабатывать URL-адрес просмотра фляги, если кто-то посещает IP: 5601. Вместо того, чтобы отправлять их в Kibana, он должен перенаправить в мое приложение flask для аутентификации.
Я попытался добавить еще один серверный блок для прослушивания на 5601 и proxy_pass в файл flask sock, я получаю сообщение об ошибке nginx, в котором говорится, что он не может привязаться к 5601, и просит меня убить слушателя на 5601. Но мне нужно, чтобы Kibana всегда работала на 5601. (если только я не смогу найти способ запустить эту службу через python flask).
Вариант 2. Приложение Kibana запускается на локальном хосте с портом 5601, подключенным к «/ kibana», чтобы не конфликтовать с «/», необходимым для flask. Затем он открывается через обратный прокси-сервер nginx.
server {
listen 80;
server_name example.com;
location / {
include proxy_params;
proxy_pass http://unix:/home/ubuntu/myproject/myproject.sock;
}
location /kibana/ {
proxy_pass http://localhost:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
rewrite /kibana/(.*)$ /$1 break;
}}
С этой настройкой можно получить доступ к Kibana, перейдя в IP/kibana. Но проблема с вариантом 2 заключается в том, что если у меня есть представление /kibana в моем приложении flask, чтобы поймать его, оно не вступит в силу, поскольку перенаправление на Kibana происходит в nginx, поэтому flask никогда не задействуется.
Я не смог найти много информации о стеке и т. Д., Поскольку большинство решений используют nginx для аутентификации Kibana, а не каких-либо других приложений Python.
Учитывая это, как бы я интегрировал ваше решение? Заранее большое спасибо за изучение этого.