Elasticsearch 404가 nginx 프록시를 통해 인덱스 생성을 시도합니다.

Elasticsearch 404가 nginx 프록시를 통해 인덱스 생성을 시도합니다.

nginx를 통해 Elasticsearch를 프록시하려고 합니다. 대부분의 것이 작동하는 것 같지만 문제가 있는 한 가지는 인덱스를 생성하는 것입니다.

이는 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

하지만 ES 앞에 nginx를 프록시로 설치하려고 하면 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, 엘라스틱서치 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;

관련 정보