8

我在同一台服务器上运行 kibana 4 和 elasticsearch。

我需要通过域访问 kibana,但是当我尝试时,我一直找不到文件。

我只是在 nginx 中创建位置 /kibana,proxy_pass 是 kibana 的 ip:port。
有人有这个吗?

4

5 回答 5

16

这适用于 kibana 4.0.1。我假设您在与 nginx 侦听端口 5601 的同一主机上运行 kibana。

您的 nginx 配置应如下所示:

server {
  listen                *:80 ;

  server_name           server;
  access_log            /var/log/nginx/kibana.srv-log-dev.log;
  error_log            /var/log/nginx/kibana.srv-log-dev.error.log;

  location / {
    root  /var/www/kibana;
    index  index.html  index.htm;
  }

  location ~ ^/kibana4/.* {
    proxy_pass http://kibana4host:5601;
    rewrite ^/kibana4/(.*) /$1 break;
    proxy_set_header Host $host;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/conf.d/kibana.myhost.org.htpasswd;
  }
}

线条

auth_basic "Restricted";
auth_basic_user_file /etc/nginx/conf.d/kibana.myhost.org.htpasswd;

可用于为站点提供基本身份验证。

访问链接为http://server/kibana4

于 2015-03-13T06:39:27.023 回答
6

不要只使用位置,因为它在 / 之后寻找实际文件

kibana4 不是基于位置的,而是一个实际的服务

每当您使用 proxy_pass 时,您都必须使用上游减速

这是一个带有 http 基本身份验证和 SSL 终止的工作配置

upstream kibana {
    server 127.0.0.1:5601 fail_timeout=0;
}

server {
    listen      80;
    return 301 https://example.com;
}

server {
  listen                *:443 ;
  ssl on;
  ssl_certificate /etc/nginx/ssl/all.crt;
  ssl_certificate_key /etc/nginx/ssl/server.key;

  server_name           example.com;
  access_log            /var/log/nginx/kibana.access.log;

  location / {
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/conf.d/kibana.htpasswd;
    proxy_pass http://kibana;
  }
}
于 2015-03-30T09:25:03.250 回答
5

这适用于 Kibana 4.6.1:

location ~ (/app/kibana|/bundles/|/kibana|/status|/plugins) {
    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 配置中的 server.basePath 必须设置为“/”(或根本没有注释)

于 2016-11-25T06:59:17.460 回答
3

我通过以下方式修复了它:

location /kibana4/ {
proxy_pass http://host:5601/;
proxy_redirect http://host:5601/ /kibana4/;
}

我不得不使用 proxy_redirect 来获得回复!

谢谢

于 2015-03-16T16:15:44.590 回答
0

因为 Kibana 有一个单独的前端和后端。您需要为双方设置两个代理。这在 Kibana 7+ 中对我有用,而 Kibana 配置文件没有更改:

set $proxy_pass_url http://localhost:5601;

# Main location which proxy's Kibana backend server
location / {
    proxy_set_header Host $proxy_pass_url;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_http_version 1.1;
    proxy_set_header Connection "Keep-Alive";
    proxy_set_header Proxy-Connection "Keep-Alive";
    proxy_set_header Authorization "";
    proxy_pass $proxy_pass_url/;
    proxy_redirect $proxy_pass_url/ /;
}

# Reverse proxy of assets and front end app
location ~ (/app|/translations|/node_modules|/built_assets/|/bundles|/es_admin|/plugins|/api|/ui|/elasticsearch) {
    proxy_pass          $proxy_pass_url;
    proxy_set_header    Host $host;
    proxy_set_header    X-Real-IP $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header    X-Forwarded-Proto $scheme;
    proxy_set_header    X-Forwarded-Host $http_host;
    proxy_set_header    Authorization "";
    proxy_hide_header   Authorization;
}
于 2019-11-11T16:07:32.643 回答