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