Я пытаюсь настроить Кибана4 с обратным прокси nginx, пока с частичным успехом. Вот мой конфиг, связанный с Кибаной:
server {
listen 82;
server_name ${HOSTNAME};
set $kibana kibana.docker;
location /kibana4/ {
proxy_pass http://$kibana:5601;
proxy_set_header Host $host;
proxy_set_header Referer "";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_connect_timeout 150;
proxy_send_timeout 100;
proxy_read_timeout 100;
proxy_buffers 16 64k;
proxy_busy_buffers_size 64k;
client_max_body_size 256k;
client_body_buffer_size 128k;
}
}
В том случае, если я пойду в http://localhost:82/kibana4/
я получу Не найдено 404
Но если я заменю location /kibana4/
с участием location /
, все работает хорошо - конечно, URL меняется на http://localhost:82
в таком случае.
Я нашел несколько других тем, связанных с аналогичной проблемой, например:
Запуск программы sinatra [Kibana] за обратным прокси nginx в веб-каталоге
но описанные там решения мне не подходят. Я даже пробовал такой конфиг:
server {
listen 82;
server_name ${HOSTNAME};
set $kibana kibana.docker;
location /kibana4 {
proxy_pass http://$kibana:5601/;
proxy_set_header Host $host;
proxy_set_header Referer "";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_connect_timeout 150;
proxy_send_timeout 100;
proxy_read_timeout 100;
proxy_buffers 16 64k;
proxy_busy_buffers_size 64k;
client_max_body_size 256k;
client_body_buffer_size 128k;
}
}
Он запускает прокси для kibana.docker
host, но проблема в том, что все URL-адреса перезаписываются на одну и ту же страницу загрузки кибаны. Это приводит к тому, что любой файл CSS или JavaScript не может быть загружен должным образом.
У меня вопрос: кто-нибудь знает, что здесь может быть не так? Кто-нибудь успешно запускает Kibana4 из места, отличного от корневого сервера? Буду признателен за вашу помощь.
Спасибо, HD. на ваш вопрос под моим предыдущим постом - это было очень поучительно. Это помогло мне понять, в чем проблема. Я всегда забываю, что часть местоположения также передается прокси, поэтому в моем случае ее нужно переписать. Вот как должна выглядеть правильная конфигурация:
location ~ ^/kibana4/(.*)$ {
rewrite /kibana4/(.*) /$1 break;
proxy_pass http://$kibana:5601;
proxy_set_header Host $host;
proxy_set_header Referer "";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_connect_timeout 150;
proxy_send_timeout 100;
proxy_read_timeout 100;
proxy_buffers 16 64k;
proxy_busy_buffers_size 64k;
client_max_body_size 256k;
client_body_buffer_size 128k;
}
Это также объясняет, почему location /
настройка работает правильно, если нет rewrite
часть. После добавления rewrite
, только остальная часть передается прокси, и это работает как шарм.
Еще раз спасибо, урок усвоен :-)
Поздно к вечеринке, но я хотел оставить здесь удовлетворительное решение для Apache, так как я не могу их найти. То, что заставило меня работать с проксированием из подкаталога, было добавление завершающей косой черты после каталога ProxyPass:
ProxyPass /kibana/ http://localhost:5601/
ProxyPassReverse /kibana/ http://localhost:5601/
Посмотреть здесь:
Начиная с Kibana 6.3, настройки теперь доступны в kibana.yml
server.host: "example.com"
server.basePath: "/tools/kibana"
server.rewriteBasePath: true
Это будет обслуживать приложение по адресу http://example.com/tools/kibana со всеми ссылками в интерфейсе Kibana