微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

nginx – Elasticsearch:连接到上游时连接被拒绝

我已经使用Kibana设置了一个Elasticsearch服务器来收集一些日志.

Elasticsearch是Nginx的反向代理,这里是conf:

server {   
  listen   8080;   
  server_name myserver.com; 
  error_log   /var/log/Nginx/elasticsearch.proxy.error.log;
  access_log  off;

  location / {

    # Deny Nodes Shutdown API
    if ($request_filename ~ "_shutdown") {
      return 403;
      break;
    }

    # Pass requests to ElasticSearch
    proxy_pass http://localhost:9200;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Connection "";

    proxy_set_header  X-Real-IP  $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header  Host $http_host;

    # For CORS Ajax
    proxy_pass_header Access-Control-Allow-Origin;
    proxy_pass_header Access-Control-Allow-Methods;
    proxy_hide_header Access-Control-Allow-Headers;
    add_header Access-Control-Allow-Headers 'X-Requested-With, Content-Type';
    add_header Access-Control-Allow-Credentials true;

  }

}

一切运作良好,我可以卷曲-XGET“myserver.com:8080”进行检查,我的日志就进来了.

但每分钟左右,在Nginx错误日志中,我得到了:

2014/05/28 12:55:45 [error] 27007#0: *396 connect() Failed (111: Connection refused) while connecting to upstream, client: [REDACTED_IP], server: myserver.com, request: "POST /_bulk?replication=sync HTTP/1.1", upstream: "http://[::1]:9200/_bulk?replication=sync", host: "myserver.com"

我无法弄清楚它是什么,在conf中是否有任何问题会阻止某些_bulk请求通过?

解决方法:

看起来像上游和ES后端正常工作需要不同的keepalive,我终于让它使用以下配置工作:

upstream elasticsearch {
    server 127.0.0.1:9200;
    keepalive 64;
}

server {

  listen 8080;
  server_name myserver.com;
  error_log   /var/log/Nginx/elasticsearch.proxy.error.log;
  access_log  off;

  location / {

    # Deny Nodes Shutdown API
    if ($request_filename ~ "_shutdown") {
      return 403;
      break;
    }

    # Pass requests to ElasticSearch
    proxy_pass http://elasticsearch;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Connection "";

    proxy_set_header  X-Real-IP  $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header  Host $http_host;

    # For CORS Ajax
    proxy_pass_header Access-Control-Allow-Origin;
    proxy_pass_header Access-Control-Allow-Methods;
    proxy_hide_header Access-Control-Allow-Headers;
    add_header Access-Control-Allow-Headers 'X-Requested-With, Content-Type';
    add_header Access-Control-Allow-Credentials true;

  }

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐