Nginx

為什麼 nginx 需要一個 auth_http 條目來進行 smtp 反向代理?

  • May 20, 2016

我通常是 apache 使用者,但我需要開始使用 nginx 作為 smtp(後綴)的反向代理。

我在網上看過幾十個例子。像這樣這樣。他們都有一個auth_http條目,我完全不明白。這不是我第一次使用代理,幾個月以來我一直在使用haproxy。那麼我為什麼要提供一個php認證頁面呢?為什麼我不能像使用 haproxy 一樣簡單地使用 nginx,然後告訴它:在這裡設置一個前端,用這個密鑰解密 ssl,然後把它帶到那個後端/埠?

有人可以解釋一下auth_http該條目的必要性嗎?nginx手冊好像沒說太多。

感謝您的任何努力。

基本上,您的工作流程中有三個重要步驟

  • 通過 STARTTLS 或 SMTPS 進行加密和解密過程
  • 身份驗證過程,即檢查您是否允許進行 SMTP 交易
  • SMTP 轉錄(MAIL FROM、RCPT TO 等)

據我了解,您想使用 nginx 來執行第 1 步,並將剩餘的事務透明地傳遞給後端。不幸的是,由於它的設計,你不能用 nginx 來做到這一點。Nginx 在將請求傳遞到後端之前總是執行第 1 步和第 2 步。

這就是為什麼參數auth_http變得至關重要的原因。基本上 nginx 從 SMTP 身份驗證過程中獲取使用者名和密碼,通過協議將其傳遞給 auth_http URL 。它期望關於身份驗證狀態(事務是否可以繼續)以及 SMTP 數據應該傳遞到哪個地址和埠的響應。

因此,如果您只需要一些用於 SMTP 的 SSL 剝離器代理,那麼 nginx 可能不適合您的情況。

引用自:https://serverfault.com/questions/775482