Re: rewrite и ngx_aws_auth
Maxim Dounin
mdounin на mdounin.ru
Ср Июл 22 14:07:20 UTC 2020
Hello!
On Wed, Jul 22, 2020 at 04:27:58PM +0300, Slawa Olhovchenkov wrote:
> Пытаюсь подружить rewrite и ngx_aws_auth и выходит что-то странное.
>
> в конфигурации локейшена у меня
>
> rewrite /(.*) /$host/$1;
> rewrite /([^.]+)[^/]+/(.*) /$1/$2 break;
> aws_sign;
>
> В дебаге видно что rewrite uri меняет, а ngx_aws_auth получает
> немодифицированный uri.
>
> если в локейшине написать if -- ngx_aws_auth вообще не срабатывает
> (хотя тут я могу догадаться что он не наследуется).
>
> Отсюда вопросы:
>
> что за фигня?
> что происходит?
> какую переменную на самом деле меняет rewrite?
Заглянул в код этого ngx_aws_auth, всплакнул.
Всё правильно, работать не будет. И не только после rewrite'а, но
и в других непредсказуемых ситуациях - при наличии аргументов в
запросе модуль лезет в r->uri_start, значение которого имее смысл
только в момент парсинга URI и не гарантируется в остальное
время[1][2].
Лечится переписыванием модуля, чтобы использовал r->uri всегда.
[1] https://github.com/anomalizer/ngx_aws_auth/blob/master/aws_functions.h#L317
[2] http://hg.nginx.org/nginx/file/tip/src/http/ngx_http_request.h#l576
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru