将请求路由到多个后端服务器 Dropwizard 和 Elasticsearch

Routing requests to multiple backend servers Dropwizard and Elasticsearch

我必须后端服务器 :

  1. 一个dropwizard服务器,主要作为应用服务器。此服务器由前端用于除搜索之外的所有操作。
  2. 由为所有搜索查询提供前端服务的 dropwizard 服务器提供的 elasticsearch 服务器。

知道 dropwizard 运行 在端口 8080 上,elasticsearch 在端口 9200 上,是否有任何策略可以使用单个前端(例如 nginx 或 apache)来将搜索请求路由到 elasticsearch 和对 dropwizard 的非搜索请求(添加额外的 headers 以区分搜索请求或在 url 中使用不同的路径进行搜索请求)?

我愿意接受任何建议或配置,

提前致谢,

Nginx 配置

您可以通过它们自己的端口代理它们:

server {
  listen 8080;

  location / {
    proxy_pass http://dropwizard-host:8080/;
  }
}

server {
  listen 9200;

  location / {
    proxy_pass http://elasticsearch-host:9200/;
  }
}

或者将它们映射到具有不同路径的同一端口:

server {
  listen 80;

  location /dropwizard {
    proxy_pass http://dropwizard-host:8080/;
  }

  location /elasticsearch {
    proxy_pass http://elasticsearch-host:9200/;
  }
}