gpt4 book ai didi

elasticsearch - 使 Elasticsearch 服务器只读的简单方法

转载 作者:行者123 更新时间:2023-11-29 02:43:54 25 4
gpt4 key购买 nike

只需将一堆 json 数据上传到 elasticsearch 服务器以获得基本查询 api 真的很容易,有很多选项

我只是想知道是否有简单的方法来发布它以防止人们修改它

在默认设置下,服务器处于打开状态,不会接收到会修改数据的 DELETE 或 PUT http 消息。

是否有某种设置可以将其配置为只读?或者我应该配置某种 http 代理来实现它吗?

(我是elasticsearch新手)

最佳答案

如果要将Elasticsearch API暴露为只读,我觉得最好的办法是把Nginx放在前面,拒绝除GET之外的所有请求。示例配置如下所示:

# Run me with:
#
# $ nginx -c path/to/this/file
#
# All requests except GET are denied.

worker_processes 1;
pid nginx.pid;

events {
worker_connections 1024;
}

http {

server {

listen 8080;
server_name search.example.com;

error_log elasticsearch-errors.log;
access_log elasticsearch.log;

location / {
if ($request_method !~ "GET") {
return 403;
break;
}

proxy_pass http://localhost:9200;
proxy_redirect off;

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}

}

}

然后:

curl -i -X GET http://localhost:8080/_search -d '{"query":{"match_all":{}}}'
HTTP/1.1 200 OK

curl -i -X POST http://localhost:8080/test/test/1 -d '{"foo":"bar"}'
HTTP/1.1 403 Forbidden

curl -i -X DELETE http://localhost:8080/test/
HTTP/1.1 403 Forbidden

请注意,恶意用户仍可能搞乱您的服务器,例如发送不正确的脚本负载,这会使 Elasticsearch 卡住,但对于大多数用途而言,这种方法没有问题。

如果您需要对代理进行更多控制,您可以使用更复杂的 Nginx 配置,或者编写专用代理,例如。在 Ruby 或 Node.js 中。

查看此 example用于更复杂的基于 Ruby 的代理。

关于elasticsearch - 使 Elasticsearch 服务器只读的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14115475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com