Elasticsearch 404 intenta crear un índice a través del proxy nginx

Elasticsearch 404 intenta crear un índice a través del proxy nginx

Estoy intentando hacer proxy de Elasticsearch a través de nginx. La mayoría de las cosas parecen funcionar, pero una cosa que está teniendo problemas es la creación de índices.

Esto funciona cuando se conecta directamente a ES:

curl -XPUT http://localhost:9200/foo" -fsS -o/dev/null -d@- << BODY
{
  "settings": {
    "analysis": {
      "analyzer": {
        "case_insensitive_sort": {
          "tokenizer": "keyword",
          "filter": ["lowercase"]
        }
      }
    },
    "index": {
      "number_of_replicas": 0
    }
  }
}
BODY

Pero cuando intento poner nginx como proxy delante de ES, obtengo un 404 de ES. Mi configuración de nginx es:

upstream es {
  server 127.0.0.2:9200;
}

map $request_method $upstream {
  default es;
}

server {
  listen 127.0.0.1:9200;
  client_max_body_size 20M;

  location / {
    proxy_pass http://$upstream;
  }
}

ES está configurado para escuchar en una dirección IP, por lo que no creo que esto esté relacionado con que no se pasen los encabezados del host:

# elasticsearch.yml
network.bind_host: 127.0.0.2

Esto parece algo delicado con respecto a ES, pero tal vez estoy haciendo algo tonto y mal con el proxy nginx. No estoy realmente seguro de qué más probar. He visto algunos problemas relacionados en los que la solución era no usar nginx, pero esa no es realmente una opción para mí.

nginx 1.14, búsqueda elástica 1.7.

Respuesta1

Por favor echa un vistazohttps://www.nginx.com/blog/nginx-elasticsearch-better-together/#proxy_cache_valid

especialmente debajo de los parámetros.

    proxy_cache elasticsearch;
    proxy_cache_valid 200 302 10m;
    proxy_cache_valid 404 1m;

información relacionada