LINUX.ORG.RU
решено ФорумAdmin

Auth_basic и proxy_pass в Nginx

 ,


0

2

Наблюдаю какую-то нелогичное поведение при использовании auth_basic
Мне нужно временно закрыть доступ к главной аутентификацией, при этом всё остальное закрывать не нужно
Конфиг:

   location / {
     auth_basic           "Wassup dawg";
     auth_basic_user_file /home/vasyan/auth/.htpasswd;
     root   /home/vasyan/testapp;
     index  index.html;
     try_files $uri $uri/ /;
   }

   location /api {
     proxy_pass http://someupstream
   }


Почему то при каждом обращении к /api возникает запрос аутентификации, даже если добавить там явно auth_basic off
Гугл находит аналогичную проблему без решения
https://serverfault.com/questions/796028/nginx-proxy-pass-and-auth-basic-prom...

★★★★★
Ответ на: комментарий от Deleted

Да, на вид работает, наконец догадался посмотреть дамп и там действительно был этот заголовок в сторону апстрима, завтра потестирую поплотнее
Но, ска, как так, что за танцы с бубнами?!

zolden ★★★★★
() автор топика
Ответ на: комментарий от zolden

Ну, собственно, всё логично.

Пользователь идёт на главную, получает запрос авторизации, авторизуется. И дальше заголовок авторизации суёт во все запросы к этому домену. И пока он не попадает на /api, всё хорошо - фронтовый веб-сервер эту аутентификацию обрабатывает, и пользователю данные отдаёт.

Но вот пользователь идёт на url /api/xxx, и его браузер всё так же отправляет заголовок Authorization. Добрый nginx все заголовки клиента, кроме запрещённых, передаёт в апстрим. И уже апстрим ругается на эту пару логин-пароль и требует повторной авторизации (не очень очевидное поведение апстрима, кстати говоря). Ну а с помощью proxy_set_header Authorization ""; ты просто запрещаешь передавать заголовок Authorization апстриму.

Проверить это предположение можно, открыв при старой конфигурации в порнорежиме на твоём сайте урл с /api.

Ну и это, не стесняйся в nginx debug-лог включать, там бы ты сразу увидел, что у тебя апстрим авторизацию просит, а не фронтовый веб-сервер.

tiandrey ★★★★★
()
Последнее исправление: tiandrey (всего исправлений: 2)
Ответ на: комментарий от tiandrey

Но почему не срабатывает auth_basic off? Вот что меня больше всего добивает.
На моём окружении nginx к сожалению собран без debug и заменить нельзя

zolden ★★★★★
() автор топика
Ответ на: комментарий от zolden

Но почему не срабатывает auth_basic off? Вот что меня больше всего добивает.

Запрос аутентификации приходит не от фронтового nginx'а, а от апстрима, насколько я понимаю.

На моём окружении nginx к сожалению собран без debug и заменить нельзя

Чо, даже в хомяк залить бинарник с дебагом нельзя?

tiandrey ★★★★★
()
Последнее исправление: tiandrey (всего исправлений: 1)
Ответ на: комментарий от zolden

Будь мужиком, собери сам, блеать! Там ничего особого для сборки не требуется.

tiandrey ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.