elasticsearch 索引\u未找到\u异常-Elasticsearch
在图1中,如您所见,我在触发GET请求时得到了有效的ES响应。但是,如果我尝试通过我创建的NGINX反向代理执行相同的操作,并点击myip/elasticsearch,它会返回错误(图2)。有人能帮我吗
elasticsearch 索引\u未找到\u异常-Elasticsearch,
elasticsearch,nginx,
elasticsearch,Nginx,在图1中,如您所见,我在触发GET请求时得到了有效的ES响应。但是,如果我尝试通过我创建的NGINX反向代理执行相同的操作,并点击myip/elasticsearch,它会返回错误(图2)。有人能帮我吗 server { listen 80; server_name myip; location /elasticsearch/ { proxy_pass http://127.0.0.1:9200; } location /kibana/
server {
listen 80;
server_name myip;
location /elasticsearch/ {
proxy_pass http://127.0.0.1:9200;
}
location /kibana/ {
proxy_pass http://127.0.0.1:5601;
}
}
问题在于路径。Nginx正在未经修改地传递它 在
proxy\u pass
URL处添加斜杠
server {
listen 80;
server_name myip;
location /elasticsearch/ {
proxy_pass http://127.0.0.1:9200/;
}
location /kibana/ {
proxy_pass http://127.0.0.1:5601/;
}
}
从:
注意,在上面的第一个示例中,代理服务器的地址后面跟着一个URI,/link/。如果URI与地址一起指定,它将替换与位置参数匹配的请求URI部分。例如,这里将代理具有/some/path/page.html URI的请求。如果指定的地址没有URI,或者无法确定要替换的URI部分,则传递完整的请求URI(可能是修改的)
正确的方法是指定这两个斜杠。
127.0.0.1:9000之后的斜杠是必不可少的,如果没有它,您的请求/elasticsearch/some/route
将按原样传递,而使用该斜杠,则将按/some/route
传递。在nginx术语中,这意味着您在后端名称之后指定了一个URI。也就是说,在位置
指令(/elasticsearch/
)中指定的URI前缀从原始URI(我们在这个阶段有some/route
)中剥离出来,并在后端名称(/
)之后指定URI作为前缀,从而导致/
+some/route
==/some/route
)。您可以在proxy\u pass
指令中指定任何路径,例如,使用proxy\u passhttp://127.0.0.1:9200/prefix/
该请求将作为/prefix/some/route
传递到后端。现在,如果您理解了所说的一切,您可以看到指定location/elasticsearch{…}
而不是location/elasticsearch/{…}
将为您提供//some/route
而不是/some/route
。我不确定这到底是你的问题的原因
location /elasticsearch/ {
proxy_pass http://127.0.0.1:9200/;
}
你说得更正确
现在,我想问一下,对于curl-I,这个配置到底得到了什么http://localhost:9200/
和curl-ihttp://localhost/
?我想查看所有的标题(当然,包含私人信息的标题除外)。我刚刚意识到不需要在路径后再加一个斜杠。因此,我删除了/
,现在它看起来像位置/elasticsearch
。然而,我在proxy\u pass中不断得到相同的异常http://127.0.0.1:9200/
以及代理通行证http://127.0.0.1:9200
它正在工作。端口号后的斜杠很重要。我在配置时输入了一个错误。非常感谢。