Elasticsearch 404 tentando criar índice através do proxy nginx

Elasticsearch 404 tentando criar índice através do proxy nginx

Estou tentando fazer proxy do Elasticsearch por meio do nginx. A maioria das coisas parece funcionar, mas uma coisa que está apresentando problemas é a criação de índices.

Isso funciona ao conectar diretamente ao 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

Mas quando tento colocar o nginx como proxy na frente do ES, recebo um 404 do ES. Minha configuração do nginx é:

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;
  }
}

O ES está configurado para escutar um endereço IP, então não acho que isso esteja relacionado ao fato de os cabeçalhos do host não serem passados:

# elasticsearch.yml
network.bind_host: 127.0.0.2

Isso parece algo complicado no ES, mas talvez eu esteja fazendo algo estúpido e errado com o proxy nginx. Não tenho certeza do que mais tentar. Já vi alguns problemas relacionados em que a solução era não usar o nginx, mas isso não é realmente uma opção para mim.

nginx 1.14, elasticsearch 1.7.

Responder1

Por favor, dê uma olhadahttps://www.nginx.com/blog/nginx-elasticsearch-better-together/#proxy_cache_valid

especialmente abaixo dos parâmetros.

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

informação relacionada