nginx:了解auth_http(IMAP代理)的目的

我想通过Nginx代理将IMAP客户端请求发送到IMAP后端.根据mail_auth_http模块,必须使用指令auth_http来验证客户端.但是auth_http究竟是什么目的,为什么认证过程不能简单地转发到IMAP后端呢?

据我所知,auth_http指向一个身份验证脚本,该脚本使用自定义HTTP协议来确定将使用哪个后端等,并且完全跳过基于IMAP的实际身份验证.我对么?

如果有人能发布一个实际的例子,我会很感激.

最佳答案
auth_http主要做两件事:

>它对用户进行身份验证(包括有效延迟用户身份验证失败的各种选项).
>它确定使用哪个后端(以及在后端身份验证中使用的用户名和密码,如果有的话).

虽然在某些情况下,身份验证可以由后端直接处理,但这并不总是可行的.此外,如果需要将Nginx用作邮件代理,则几乎总是意味着有多个后端,并且事先不知道后端.

使用Nginx处理身份验证(特别是身份验证错误)也更有效,因为邮件服务器倾向于使用每个连接进程的模型,并且在返回错误之前无法有效等待一段时间.

如果您不关心上述所有内容,并希望Nginx只是将连接传递给预定的后端,您可以在Nginx http {}块中使用类似这样的内容作为一个简单的auth_http脚本:

location = /auth {
    add_header Auth-Status OK;
    add_header Auth-Server 127.0.0.2;  # backend ip
    add_header Auth-Port   143;        # backend port
    return 204;
}

使用这样的auth脚本,Nginx将始终获得成功的身份验证结果,并且它将通过客户端提供的用户名和密码将连接传递给指定的后端.

但请注意,这不应与SMTP一起使用,因为SMTP没有后端身份验证.

相关文章

Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一...
本地项目配置 1 复制 luffy/settings/dev.py为prop.py 修改l...
nginx不仅可以隐藏版本信息,还支持自定义web服务器信息 先看...
一 、此次漏洞分析 1 nginx HTTP/2漏洞 [nginx-announce] ng...
###进入nginx 目录cd /usr/local/nginx###递归显示 2 级目录...
在cmd命令窗口输入下面命令进行查看 tasklist /fi "ima...