Elasticsearch 404 пытается создать индекс через прокси nginx

Elasticsearch 404 пытается создать индекс через прокси nginx

Я пытаюсь проксировать Elasticsearch через nginx. Большинство вещей, кажется, работают, но одна вещь, с которой возникают проблемы, это создание индексов.

Это работает при прямом подключении к 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

Но когда я пытаюсь настроить nginx как прокси перед ES, я получаю от ES 404. Мой конфиг 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;
  }
}

ES настроен на прослушивание IP-адреса, поэтому я не думаю, что это связано с тем, что заголовки хоста не передаются:

# elasticsearch.yml
network.bind_host: 127.0.0.2

Похоже, что ES капризничает, но, возможно, я делаю что-то глупое и неправильное с прокси nginx. Я не уверен, что еще попробовать. Я видел несколько связанных проблем, где решением было не использовать nginx, но это не совсем вариант для меня.

nginx 1.14, elasticsearch 1.7.

решение1

Пожалуйста, посмотритеhttps://www.nginx.com/blog/nginx-elasticsearch-better-together/#proxy_cache_valid

особенно нижеприведенные параметры.

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

Связанный контент