Назад | Перейти на главную страницу

Обратный прокси-сервер Kibana4 + nginx с использованием location / kibana4 / = Not Found 404

Я пытаюсь настроить Кибана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/

Посмотреть здесь:

http://www.marathon-studios.com/blog/solved-kibana-5-not-loading-404ing-when-reverse-proxying-in-a-subdirectory/

Начиная с Kibana 6.3, настройки теперь доступны в kibana.yml

server.host: "example.com"
server.basePath: "/tools/kibana"
server.rewriteBasePath: true

Это будет обслуживать приложение по адресу http://example.com/tools/kibana со всеми ссылками в интерфейсе Kibana