Kibana使用Nginx反向代理设置提示404
[toc]
使用Nginx反向代理转发Kibana经常会遇到404的错误,这里介绍解决该问题的方法。
直接上正确的配置
# 修改Kibana配置
这里重点是server.basePath: "/kibana_prd"
参数一会转发用
server.port: 5601
server.host: "0.0.0.0"
server.basePath: "/kibana_prd"
server.rewriteBasePath: true
elasticsearch.hosts: ["http://ip:9200"]
kibana.index: ".kibana"
i18n.locale: "zh-CN"
1
2
3
4
5
6
7
2
3
4
5
6
7
# Nginx配置
server {
listen 18080;
server_name localhost;
location /kibana_prd {
rewrite ^/kibana_prd(/.*)$ $1 break;
proxy_pass http://192.168.1.1:5601/;
proxy_set_header Host $host;
proxy_set_header Connection 'upgrade';
proxy_cache_bypass $http_upgrade;
}
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
这段Nginx配置涉及设置一个服务监听在端口18080,并配置了一个特定的路径转发到Kibana的服务。下面详细解释各个部分:
listen 18080;
:- 这一行配置Nginx监听在18080端口。任何发到这个端口的HTTP请求都会被这个server块处理。
server_name localhost;
:- 这里指定
server_name
为localhost
,意味着只有在请求头中Host
字段为localhost
的请求才会由此server块处理。
- 这里指定
location /kibana_prd
:- 这条指令定义了一个location块,只处理URL路径以
/kibana_prd
开头的请求。
- 这条指令定义了一个location块,只处理URL路径以
rewrite ^/kibana_prd(/.*)$ $1 break;
:- 这行是一个重写规则。它的作用是将以
/kibana_prd
开头的请求路径中的/kibana_prd
部分去掉。例如,/kibana_prd/index.html
会被重写为/index.html
。break
表示停止处理后续的rewrite规则。
- 这行是一个重写规则。它的作用是将以
proxy_pass http://192.168.1.1:5601/;
:- 这行配置Nginx将请求代理到内部网络中的另一台服务器(IP地址为192.168.1.1,端口为5601),这通常是Kibana服务所在的位置。注意末尾的斜杠
/
很重要,它保证了重写后的URI被正确地传递给代理服务器。
- 这行配置Nginx将请求代理到内部网络中的另一台服务器(IP地址为192.168.1.1,端口为5601),这通常是Kibana服务所在的位置。注意末尾的斜杠
proxy_set_header Host $host;
:- 这条指令设置代理请求的HTTP头部中的
Host
字段为原始请求的Host
值,通常是localhost
。
- 这条指令设置代理请求的HTTP头部中的
proxy_set_header Connection 'upgrade';
:- 这条指令设置代理请求的
Connection
头部为upgrade
,这在WebSocket连接中通常需要,用于处理升级为WebSocket的HTTP连接。
- 这条指令设置代理请求的
proxy_cache_bypass $http_upgrade;
:- 如果
$http_upgrade
变量(通常在WebSocket连接中设置为upgrade
)为非空,这条指令会使Nginx绕过缓存,直接将请求发给后端服务器。这在处理不应被缓存的动态内容时很有用。
- 如果
上次更新: 2024/04/12, 19:10:20