Kibana4 + обратный прокси nginx с использованием location /kibana4/ = Не найдено 404
Я пытаюсь настроить Kibana4 с обратным прокси-сервером nginx, пока с частичным успехом. Вот мой конфиг, связанный с Kibana:
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
хост, но проблема в том, что все URL перезаписываются на одну и ту же страницу загрузки kibana. Это приводит к тому, что любой файл CSS или JavaScript не может быть загружен должным образом.
Мой вопрос: кто-нибудь знает, что здесь может быть не так? Кто-нибудь успешно запускает Kibana4 из корневого каталога сервера? Буду признателен за вашу помощь.
2 ответа
Спасибо, 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.