Re: auth_digest -- несколько вопросов

Maxim Dounin mdounin at mdounin.ru
Wed Feb 26 15:07:04 UTC 2014


Hello!

On Wed, Feb 26, 2014 at 06:42:41PM +0400, denis wrote:

> 26.02.2014 18:14, Maxim Dounin пишет:
> >Единственный вариант, который _теоретически_ может работать - это
> >использование нескольких альтернативных схем аутентификации.
> >Клиенту отправляется несколько разных WWW-Authenticate заголовков,
> >с разными схемами аутентификации, а он выбирает из них ту, которая
> >ему больше нравится.  На практике - и так тоже будут проблемы.
> >То, что вы описываете - работать не будет гарантированно.
> >
> >BTW, а с какой целью используется digest-аутентификация?
> >Безотносительно конкретного модуля - проблем она, IMHO, создаёт
> >больше, чем решает.  Обычно проще и правильнее использовать basic
> >вкупе с ssl.
> Есть ряд проектов, которые программерам надо выставить в мир, но
> а) проблема, что могут проиндексировать, даже несмотря на robots.txt

Это решает любая аутентификация, будь то basic или digest.

> б) это прямо запрещает лицензия битрикса, 1 лицензия - 1 место размещения.
> Поэтому искали метод такого выставления, кроме VPN.

Т.е. есть сайт, раздающийся по http, и чтобы раздать то же самое 
(часть того же самого) по https будет нужна дополнительная 
лицензия?

По моему, вас неверно информировали.  По крайней мере 
ничего подобного я там не вижу (так удивился утверждению, что 
нашёл и посмотрел).  Есть расплывчатое определение термина "сайт", 
к которому и привязаны лицензионные ограничения, но никаких 
утверждений, позволяющих сделать вывод о недопустимости https там 
не видно.  Более того, даже требования использовать только один 
домен не видно.

> а почему не будет работать вариант с разделением? например, проверяем куку
> авторизации, если есть авторизация битриксом - просто отдаем, иначе
> подключаем digest

Нет ничего общего между basic-аутентификацией и куками.  Ну разве 
что кроме собственно протокола HTTP.

http://en.wikipedia.org/wiki/Basic_access_authentication

> и попутно маленький вопрос: как можно принудительно переслать в именованный
> location? что-то типа try_files @apache
> например, если надо описать ряд локейшенов, но не через регэкспы, чтобы
> приоритет не имел значения. например
> location @apache {
> proxy_pass .....
> }
> 
> location = /a1/ {
> try_files @apache;
> }
> location /a2/ {
> try_files @apache;
> }
> 
> таких секций может быть с десяток. Если объединить в 1 локейшн вида ~
> /a(1|2)/ - то если выше будет прописан показ картинок (~ .(jpg|png)), то в
> эти секции запрос уже не попадает.
> Нужно это, чтобы вынести их в отдельный конфиг и инклудить в куче проектов,
> но не заботиться о порядке блоков. Без инклудов не вариант, править 50+
> конфигов руками хотя бы раз в неделю - извините, нам такого не надо. Писать
> систему шаблонов, после каждого изменения заново пересоздавать все
> файлы-конфиги -- работы не на 1 месяц, конфигов много и они сильно разные.

Судя по описанию, правильное решение вашей проблемы - вместо 
"location @apache" сделать отдельный include-файл с нужной 
конфигурацией проксирования и использовать его.

Ну и откройте для себя наследование значений директив в конфигах 
nginx'а, это обычно сильно сокращает размеры конфигов.

> кстати, если локейшн описан как ^~, но выше есть другой локейшн на тот же ~
> .jpg, все-равно в этой секции не окажемся.

Это не так.  Если у максимально совпавшего статического location'а 
есть модификатор "^~", то регулярные выражения не проверяются.  И 
от порядка это не зависит.

Подробнее тут:

http://nginx.org/r/location

-- 
Maxim Dounin
http://nginx.org/



Подробная информация о списке рассылки nginx-ru