【问题标题】:client ip behind nginx reverse proxynginx反向代理后面的客户端ip
【发布时间】:2021-09-01 10:01:19
【问题描述】:

我正在运行一个 nginx 反向代理,以便能够在我的防火墙后面运行多个服务器。我注意到在我的邮件服务器上,错误日志充满了“从 登录失败”,我想知道如何设置它,以便获得尝试登录的人/机器人的远程 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;
    }
}

【问题讨论】:

    标签: nginx nginx-reverse-proxy


    【解决方案1】:

    我认为您正在寻找其中之一

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

    您可以将这些添加到 http、server 或 location 块并读取应用中的标头以过滤请求

    【讨论】:

    • 我相信我已经尝试过这些,但给出了相同的结果。我也应该对我的邮件服务器进行更改吗?
    • @vespino 读取 IP 和阻止请求的逻辑必须在您的邮件服务器本身上。如果您想阻止所有请求并仅允许来自特定 IP 的请求,您可以使用 location / { allow 1.2.3.4;全部否认; }
    • 我知道阻塞部分已经在邮件服务器上完成,因为那是日志所在的位置,但是如果我正确添加了规则,我仍然在日志文件中获得了本地 ip 而不是外部 ip .
    • 再次尝试确定,但这些行的结果相同,因此显示的是本地 ip 而不是远程/外部 ip。
    • @vespino nginx 有一些默认的日志记录,你可以检查 access_log 文件看看你是否可以在那里找到远程 IP 吗?
    【解决方案2】:

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

    【讨论】:

      最近更新 更多