nginx 反向代理后面的客户端 ip

nginx 反向代理后面的客户端 ip

我正在运行 nginx 反向代理,以便能够在防火墙后面运行多个服务器。我注意到我的 (Kerio) 邮件服务器的错误日志中充满了“从 < nginx 的本地 ip > 登录失败”,我想知道如何设置它以便获取尝试登录的人/机器人的远程 IP,以便我可以使用该信息自动阻止这些地址(例如)?

这是我当前的配置:

server {
    listen 8443 ssl http2;
    server_name mail.domain.com;

    location / {
        proxy_set_header Host $host;
        proxy_pass https://<internal ip>/;
        client_max_body_size 0;
        proxy_connect_timeout 3600;
        proxy_send_timeout 3600;
        proxy_read_timeout 3600;
        send_timeout 3600;
    }
}

添加以下几行,结果将更加相同:

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

答案1

X-Forwarded-For 是您需要的功能,它将添加包含原始客户端 IP 的 http 标头。从您所说的内容来看,Kerio 应用程序忽略了这一点,只在日志中使用源 IP(即 nginx)。也许有一个可以在应用程序上配置的选项可以分析和使用它。

答案2

刚刚发现我的邮件服务器(Kerio)对反向代理转发的信息没有任何作用,所以我唯一能做的就是希望进行更新。

相关内容