Re: add header и log format не видят часть переменных $ssl xx

Maxim Dounin mdounin на mdounin.ru
Вт Фев 11 15:19:23 UTC 2020


Hello!

On Tue, Feb 11, 2020 at 05:15:24AM -0500, yanda.a wrote:

> Maxim Dounin Wrote:
> -------------------------------------------------------
> > Если хочется логгировать факт использования early data в запросе 
> > независимо от текущего статуса handshake'а - то наиболее близкое 
> > по смыслу значение можно получить, сохраняя значение переменной 
> > $ssl_early_data на этапе поиска конфигурации для запроса с помощью 
> > директивы set.
> 
> Добрый день! Подскажите, а как это будет работать с внутренним редиректом?
> Если я все верно понимаю, то при внутреннем редиректе rewrite-phase
> отработает еще раз, после чего мы получим не совсем верное значение. Или это
> не совсем верно?

Если речь идёт о внутренних перенаправлениях в рамках исходной 
обработки запроса, без ожидания внешних событий (e.g., в рамках 
директивы index) - то разницы нет, так как значение 
$ssl_early_data будет тем же самым.

Если речь про перенаправления после общения с бэкендом (e.g., с 
помощью X-Accel-Redirect), то может потребоваться чуть более 
сложная логика, чем просто set.  Скажем, какая-то такая 
конструкция будет сохранять значение 1, если оно единожды 
встретилось:

    uninitialized_variable_warn off;

    if ($early = "") {
        set $early $ssl_early_data;
    }

Либо можно использовать map, воспользовавшись тем, что он кэширует 
результат при первом обращении:

    map $ssl_early_data $early {
        default         0;
        1               1;
    }

    server {
        ...

        set $dummy $early;

        ...
    }

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


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