Você definiu um contêiner upstream
chamado elasticsearch
. Mas você não invoca isso. Tente substituir sua diretiva proxy_pass
por:
proxy_pass http://elasticsearch;
Veja este documento para detalhes.
Estou configurando um proxy reverso nginx para ElasticSearch (com HTTP Basic Auth) como descrito neste artigo .
Este é o meu arquivo de configuração nginx:
events {
worker_connections 1024;
}
http {
upstream elasticsearch {
server elasticsearch.example.org:9200;
keepalive 64;
}
server {
listen 8080;
location / {
auth_basic "ElasticSearch";
auth_basic_user_file /var/www/.htpasswd;
proxy_pass http://elasticsearch.example.org:9200;
proxy_http_version 1.1;
proxy_set_header Connection "Keep-Alive";
proxy_set_header Proxy-Connection "Keep-Alive";
}
}
}
O proxy encaminha corretamente a porta 8080 para 9200 e deve manter as conexões persistentes (keep-alive) no Elasticsearch.
Este é o resultado de visitar o URL link ou link (autenticação HTTP já foi feita) em um navegador:
{
"cluster_name" : "elasticsearch",
"nodes" : {
"rIFmzNwsRvGp8kipbcwajw" : {
"timestamp" : 1455899085319,
"name" : "Kid Colt",
"transport_address" : "elasticsearch.example.org/10.3.3.3:9300",
"host" : "10.3.3.3",
"ip" : [ "elasticsearch.example.org/10.3.3.3:9300", "NONE" ],
"http" : {
"current_open" : 3,
"total_opened" : 28
}
}
}
}
Ao visitar a página na porta 9200 (conexão direta com o Elasticsearch) e recarregar, o campo total_opened
deve aumentar, enquanto ao visitar na porta 8080 (através do proxy nginx) e recarregar, o campo não deve ser alterado.
Na verdade, acontece o oposto. Qual é a razão desse estranho comportamento?
Você definiu um contêiner upstream
chamado elasticsearch
. Mas você não invoca isso. Tente substituir sua diretiva proxy_pass
por:
proxy_pass http://elasticsearch;
Veja este documento para detalhes.