Hello! On Mon, May 22, 2017 at 08:23:27PM -0400, BorisK2 wrote:
> Maxim Dounin Wrote: > ------------------------------------------------------- > > Если хочется какие-то ssi-фрагменты показывать в зависимости от > > результата auth_request, то следует использовать auth_request для > > основного запроса, и вернуть положительный результат, параллельно > > установив дополнительную переменную через auth_request_set. После > > чего проверять переменную с помощью, например, SSI-команды "if". > > Спасибо за совет! > Не получается установить переменную: auth_request_set $x_allow_test2 > $upstream_http_x_allow_test2; > Она всегда пустая. auth_request_set $server $upstream_http_server; тоже > пустая. > > Нашел аналогичный вопрос > https://forum.nginx.org/read.php?2,233582,233586#msg-233586 , но так и не > понял, как исправить Mistake #1. > > Конфиг: > ssi on; > > location = /test1.html { > auth_request /test_auth; > auth_request_set $x_allow_test2 $upstream_http_x_allow_test2; > } > > location = /test2.html { > } > > location = /test_auth { > add_header X-Allow-Test2 1; > return 200; > } > > > test1.html: > test1 > <!--# if expr="$x_allow_test2 = 1" --> > <!--# include file="/test2.html" --> > <!--# endif --> Вы пытаетесь использовать переменную $upstream_http_x_allow_test2. Однако переменные $upstream_http_* отражают заголовки, полученные от бекенда при проксировании (http://nginx.org/r/$upstream_http_/ru). У вас же проксирование не используется, и переменная ожидаемо пустая. Если речь идёт о том, чтобы поставить переменную в рамках подзапроса непосредственно из конфига nginx'а, то вместо auth_request_set просто сделайте set, как-то так: location = /test_auth { set $x_allow_test2 1; return 200; } Пространство переменных у запросов и подзапроса - общее, так что установленная в подзапросе переменная будет доступна в основном запросе. Директива auth_request_set нужна тогда, когда речь идёт про специальные переменные, такие как $upstream_http_*, которые могут иметь различные значения в зависимости от того, где именно к ним обращаются. -- Maxim Dounin http://nginx.org/ _______________________________________________ nginx-ru mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru
