代理后面的 Logstash 不起作用

代理后面的 Logstash 不起作用

我正在尝试在代理后面启动一些 Logstash 实例。

我正在使用 nginx,但 HAProxy 也是一个选项。

worker_processes 4;

events {
    worker_connections 1024;
}

http {
    upstream streams {
        server logstash_ip:5044;
    }

    server {
        listen 80;

        location / {
            rewrite ^/(.*) /$1 break;
            proxy_ignore_client_abort on;
            proxy_pass http://streams;
            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;
        }
    }
}

logstash_ip是一个别名,它是可解析的。

问题是,当我将一些日志直接推送到 logstash 时,一切正常。

当我通过 Nginx 推送日志时失败:

  1. 使用端口导航 Nginx 会出现 502 网关错误
  2. Logstash 日志

    发布事件时出错(重试):lumberjack 协议错误

答案1

发布事件时出错(重试):lumberjack 协议错误

这是正确的,因为lumberjack协议不是基于的http,而这正是 Nginx 在您的配置中所期望的。我建议尝试一个stream { }区块而是使用 nginx,因为它是为 TCP 协议设计的。

stream {
  server {
    listen 80
  }
  upstream stream_backend {
    server logstash_ip:5044
  }
}

相关内容