【问题标题】:nginx mail proxy behind haproxy - get clients real ip addresshaproxy 后面的 nginx 邮件代理 - 获取客户端的真实 IP 地址
【发布时间】:2021-04-07 10:03:09
【问题描述】:

我使用 nginx 作为邮件代理,用于身份验证和其他一些附加功能。但是我需要在nginx前面使用另一个代理(比如haproxy)。一切正常,一切正常。但是 nginx 无法检索客户端的真实 IP 地址。

在 http 模块中,我可以使用 x-forwarded-for 标头和 nginx 的 proxy_protocol 转发它。但是在邮件模块中,我不能这样做。邮件模块不支持 proxy_protocol。

有什么办法,如何将客户端真实IP地址传递给nginx?

我的 haproxy 和 nginx 配置喜欢;

haproxy.cfg:

frontend IMAP
    bind 0.0.0.0:143 name IMAP tcp-ut 30s

    default_backend IMAP

backend IMAP
    option tcp-check
    tcp-check connect port 11143
    tcp-check expect string * OK

    server localhost 127.0.0.1:11143 send-proxy check

nginx.conf

mail {
    auth_http 127.0.0.1:333/auth;

    proxy on;
    imap_auth plain;
    server {
        listen 11143;
        protocol imap;
        auth_http_header proxyprotocol imap;
    }
}

【问题讨论】:

    标签: nginx nginx-reverse-proxy


    【解决方案1】:

    该指令出现在 1.19.8 版本中。

    http://nginx.org/en/docs/mail/ngx_mail_proxy_module.html#proxy_protocol

    server {
        server_name ImapServer;
        listen 11143 proxy_protocol;
        protocol imap;
    }
    

    【讨论】:

    • 终于 nginx 支持这个了。谢谢你。它是有效的。 PS:有些情况,需要在服务器块中添加set_real_ip_from
    猜你喜欢
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    • 2021-09-01
    相关资源
    最近更新 更多