nginx: auth_http(IMAP 프록시)의 목적 이해

nginx: auth_http(IMAP 프록시)의 목적 이해

nginx 프록시를 통해 IMAP 클라이언트 요청을 IMAP 백엔드에 보내고 싶습니다. 에 따르면mail_auth_httpauth_http모듈에서는 클라이언트를 인증하기 위해 지시문을 사용해야 합니다. 하지만 의 목적은 정확히 무엇이며 auth_http인증 프로세스를 단순히 IMAP 백엔드로 전달할 수 없는 이유는 무엇입니까?

내가 아는 한, auth_http어떤 백엔드가 사용될지 등을 결정하기 위해 사용자 정의 HTTP 프로토콜을 사용하는 인증 스크립트를 가리키며 실제 IMAP 기반 인증은 완전히 건너뜁니다. 나 맞아?

누군가 실제 사례를 게시해 주시면 감사하겠습니다.

답변1

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;
}

이러한 인증 스크립트를 사용하면 nginx는 항상 성공적인 인증 결과를 얻고 클라이언트가 제공한 사용자 이름과 비밀번호를 사용하여 지정된 백엔드로 연결을 전달합니다.

하지만 이는~ 아니다SMTP에는 백엔드 인증이 없으므로 SMTP와 함께 사용해야 합니다.

관련 정보