Здравствуйте, я хочу каким-то образом настроить свой собственный сценарий, который nginx использует для аутентификации адреса электронной почты, чтобы передать некоторые дополнительные заголовки, чтобы каким-то образом аутентифицировать сам почтовый прокси, поэтому никакие другие почтовые прокси, кроме авторизованных, не получат ответа.
Вы знаете, как я каким-то образом передам свои заголовки в сценарий, на который хочу ответить. Например, у меня есть следующая настройка:
mail {
server_name mail.example.com;
auth_http 192.16.45.126:9000/cgi-bin/nginxauth.cgi;
proxy_pass_error_message on;
ssl on;
ssl_certificate /etc/ssl/certs/server.crt;
ssl_certificate_key /etc/ssl/certs/server.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
server {
listen 25;
protocol smtp;
smtp_auth login plain cram-md5;
}
server {
listen 110;
protocol pop3;
pop3_auth plain apop cram-md5;
}
server {
listen 143;
protocol imap;
}
}
Итак, предположим, что сценарий, расположенный в 192.16.45.126:9000/cgi-bin/nginxauth.cgi
нужны эти дополнительные заголовки auth:
proxy_user: где я установил имя пользователя для прокси
proxy_pass: где я установил пароль для прокси
Таким образом, прокси-серверы и реплицирующие запросы должны сначала пройти аутентификацию с указанным именем пользователя и паролем, а затем обработать запрос аутентификации для пользователя. Таким образом, никакой другой запрос не будет обрабатываться дальше, кроме тех, которые исходят от авторизованных прокси.
Вы знаете, возможно ли это и как я могу настроить nginx для этого?
Я думаю, вы можете использовать auth_http_header из документация nginx:
Синтаксис: значение заголовка auth_http_header; По умолчанию: - Контекст: почта, сервер. Добавляет указанный заголовок к запросам, отправляемым на сервер аутентификации. Этот заголовок можно использовать в качестве общего секрета для проверки того, что запрос исходит от nginx. Например:
auth_http_header X-Auth-Key "secret_string";
Затем в своем сценарии вы можете проверить, что содержимое заголовка X-Auth-Key содержит значение, которое вы ожидали