如何使用 Nginx 代理 Easysearch 服务

Nginx 是一个高性能的 HTTP 服务器和反向代理服务器,广泛用于负载均衡、缓存、SSL 终端和服务代理等场景。本篇将尝试使用 Nginx 代理 Easysearch 服务,方法同样适用于 Elasticsearch 和 Opensearch。

测试环境

  • Easysearch 集群版本为 1.10.0,3 个节点
  • Nginx 版本为 1.21.5

Nginx

计划使用 Nginx 将请求均匀分发到所有节点,关键配置如下:

plain 复制代码
http {
 upstream es-cluster {
   server 192.168.56.102:9200;
   server 192.168.56.102:9201;
   server 192.168.56.102:9202;
 }

 log_format es_log '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" '
                      'upstream: $upstream_addr';

 # 配置代理服务器信息
 server {
   listen 80;
   server_name localhost;

   location / {
     proxy_pass https://es-cluster;
     #proxy_http_version  1.1;
     #proxy_set_header    Connection "";

     # 添加 Basic Auth 认证
     auth_basic "Restricted Access";  # 认证提示信息
     auth_basic_user_file /etc/nginx/.htpasswd;  # 认证文件路径

     # 使用自定义日志格式
     access_log /var/log/nginx/elasticsearch_access.log es_log;
   }

 }
}

由于 Easysearch 开启了认证功能,需要 给 Nginx 创建一个认证文件。示例为 Nginx 配置了 admin 用户,大家根据情况自行调整。

plain 复制代码
echo "admin:$(openssl passwd -crypt yourpassword)" | sudo tee /etc/nginx/.htpasswd

经过上面的配置,Nginx 会将访问日志记录在 /var/log/nginx/elasticsearch_access.log 中。

至此 Nginx 已经配置完毕,启动 Nginx 服务。

plain 复制代码
sudo systemctl start nginx

测试

我们使用 curl 命令连续向 Nginx 发送 6 个查询请求,看看请求是否发送到 Easysearch 的所有节点。

plain 复制代码
curl localhost:80/infini/_search -uadmin:56939c1f6527d1a0d51c

可以看到,如我们期待那样查询请求在所有节点间轮询。

相关推荐
小二·13 小时前
向量数据库实战
数据库
炘爚14 小时前
Phase 5:MySQL 连接池
数据库·mysql
j_xxx404_14 小时前
MySQL库操作硬核解析:字符集、校验规则、大小写比较、备份恢复与连接排查
运维·服务器·数据库·人工智能·mysql·ai·oracle
minji...14 小时前
MySQL数据库 (五) MySQL表的约束(上),非空约束,默认值约束,零填充约束,主键约束,符合主键
数据库·mysql·表的约束·主键约束·非空约束·复合主键·零填充约束
拾贰_C15 小时前
【python | installation 】python 安装 | Windows | 命令使用
linux·数据库·ubuntu
贺今宵15 小时前
Vue 3 + Capacitor 使用jeep-sqlite,web端使用本地sqlite数据库
前端·数据库·vue.js·sqlite·web
小云小白15 小时前
企业抗量子落地指南(一)全链路抗量子 TLS1.3 落地指南(浏览器 → Nginx → SpringBoot)
spring boot·nginx·抗量子通信
列星随旋15 小时前
MySQL面经整理
数据库·mysql
AllData公司负责人15 小时前
大模型赋能AllData数据中台,系列升级|通过联合智谱大模型与Chat2DB开源项目,建设Text2SQL生产场景全新体验的数据源平台!
数据库·人工智能·text2sql·数据中台·数据源·chat2db·智谱大模型
minji...16 小时前
MySQL数据库 (四) MySQL的数据类型,tinyint,float,decimal,枚举enum和集合set
数据库·mysql·tinyint·enum·decimal·varchar·bit