Re: Переменная сертификата и Authorization header.
Maxim Dounin
mdounin на mdounin.ru
Ср Фев 15 04:07:22 UTC 2012
Hello!
On Tue, Feb 14, 2012 at 09:29:39PM -0500, devox wrote:
> Спасибо! Прописал:
>
> server {
> listen 192.168.2.38:8080;
> server_name nginx;
> ....
>
> location / {
> proxy_set_header Host $host;
> proxy_set_header X-Real-IP $remote_addr;
> proxy_set_header X-Forwarded-For
> $proxy_add_x_forwarded_for;
> proxy_pass http://192.168.20.38:8081;
> proxy_set_header Authorization "Basic $auth_base";
> }
>
> server {
> listen 192.168.2.38:8081;
> server_name nginx1;
> ....
> location / {
> root /usr/share/nginx/test;
> index index.html;
> auth_basic "Closed Area";
> auth_basic_user_file /etc/nginx/htpasswd;
> }
>
> base.conf
>
> map $ssl_client_serial $auth_base {
> serial1 bmdpbng6Cg==;
> serial2 bmdpbng6bmdpbngK;
> }
>
>
> Но авторизацию не проходит,
> запрашивает авторизацию, но даже если
> вручную вводишь логин и пароль, она не
> проходит.
То, что при явно указанном proxy_set_header Authorization вручную
авторизация не проходит - это нормально, вы же переопределяете
заголовок запроса, и от клиента ничего до бекенда не доходит.
> Лог выкидывает это:
> 2012/02/15 06:10:16 [error] 28769#0: *7 no user/password was provided
> for basic authentication, client: 192.168.2.38, server: , request: "GET
> / HTTP/1.0", host: "192.168.2.38"
>
> Убираю "proxy_set_header Authorization "Basic $auth_base";",
> Проверка сертификата проходит
> корректно, на бек-энде запрашивает
> авторизацию, вводишь данные - все в
> порядке. Такое впечатление, что он не
> видит, что отдается в заголовке, либо
> отдается некорректно.
Ну таки посмотрите, что отдаётся - и в nginx'е есть debug log, и
tcpdump'ом посмотреть недолго. Скорее всего вы неправильно
написали serial'ы в map'е, нужно строковое совпадение с тем, что
выдаёт переменная $ssl_client_serial.
Ну и в пиведённый base64 у вас лишние переводы строк затесались,
но от них сообщение будет другое.
Maxim Dounin
Подробная информация о списке рассылки nginx-ru