NGINX передает авторизацию дайджеста в Apache

У меня есть NGINX перед Apache, в котором включены как базовая, так и дайджест-аутентификация. Я бы хотел, чтобы пользователь подключался к NGINX (используя Basic или Digest), а NGINX просто проксировал запрос на Apache, где происходит фактическая аутентификация. У меня работает Базовый кейс, но не Дайджест. Вот как выглядит конфиг для Basic:

location /basic {
      proxy_set_header x-user $http_x_user;                
      proxy_pass       http://my.apache.server; // where authentication happens
  proxy_set_header X-Original-URI $request_uri;
      proxy_set_header       Host $host;
      proxy_set_header       X-Real-IP $remote_addr;

}

Может ли кто-нибудь помочь мне в том, как выполнить дело Дайджеста?


person Gurumurthy Sundar    schedule 20.02.2015    source источник
comment
Я бы позволил nginx обрабатывать базовую аутентификацию и дайджест-аутентификацию proxy_pass для apache.   -  person Cole Tierney    schedule 21.02.2015
comment
@Cole Не могли бы вы дать мне конкретную конфигурацию, например? Пробовал следующее, но это не сработало. location /digest { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Хост $host; proxy_pass_request_headers включен; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwared-User $http_authorization; proxy_set_header Авторизация $http_authorization; proxy_pass_header Авторизация; proxy_pass apache.server.com; }   -  person Gurumurthy Sundar    schedule 21.02.2015


Ответы (1)


Вот пример из конфига, который работал у меня:

location /basic {  # let nginx handle basic auth
    auth_basic  "Basic Authentication";
    auth_basic_user_file    conf/htpasswd;
}

location /digest {  # pass digest auth to another server
    proxy_pass  http://my.apache.server;
    proxy_set_header    Host $host;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
}
person Cole Tierney    schedule 20.02.2015
comment
Я пробовал это (и попробовал еще раз только что) и не работал. Я получаю ответ 400 (неверный запрос). Любые идеи? Я ценю вашу помощь. - person Gurumurthy Sundar; 21.02.2015
comment
В моем случае я передал дайджест-аутентификацию http://www.lighttpd.net. Что произойдет, если вы закомментируете директивы proxy_set_header? - person Cole Tierney; 21.02.2015
comment
Я попробую это, когда вернусь домой, и дам вам знать. Спасибо еще раз. - person Gurumurthy Sundar; 21.02.2015
comment
К сожалению, не работал. Блех! Я могу нажать на apache, используя клиент для отдыха с проверенным дайджестом, и я получаю успех. Итак, я в тупике, почему это не через nginx. Любые идеи? - person Gurumurthy Sundar; 21.02.2015
comment
У вас есть решение? Я столкнулся с подобной проблемой, и ответ был бы полезен. - person Nitb; 10.12.2019