nginx reverse proxy for grpc

Maxim Dounin mdounin на mdounin.ru
Ср Окт 23 12:25:01 UTC 2019


Hello!

On Wed, Oct 23, 2019 at 10:48:31AM +0300, Oleg Motienko wrote:

> Кстати, если передавать в grpc metadata "переменную" с подчеркиванием,
> она не проходит. Как я понимаю, это из-за того, что это metadata по
> сути есть http заголовки и символ подчеркивания недопустим ?

Да, примерно.

Строго говоря, символ подчёркивания допустим согласно грамматике 
HTTP-заголовков.  Однако с ним имеется проблема: в рамках CGI (а 
следом - и много где ещё, включая переменные $http_* в nginx'е) 
заголовок запроса Foo-Bar передаётся в виде переменной окружения 
HTTP_FOO_BAR.  И если разрешать символ подчёркивания в именах 
заголовков, то заголовок Foo_Bar на уровне CGI-приложения 
становится неотличим от Foo-Bar (хотя в HTTP это разные 
заголовки).  Такое различие в обработке - очевидно, проблема с 
точки зрения безопасности.  Поэтому по умолчанию nginx такие 
заголовки считает недопустимыми.

Если очень надо - заголовки с символом подчёркивания можно 
разрешить, для этого есть директива underscores_in_headers:

http://nginx.org/ru/docs/http/ngx_http_core_module.html#underscores_in_headers

Но это именно что если очень надо.  Лучше этого не делать, могут 
быть неожиданные последствия.

-- 
Maxim Dounin
http://mdounin.ru/


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