#nginx
Вопрос:
У меня есть следующая директива, которая отлично работает при запуске в локальном контейнере docker, но когда я запускаю ее в nginx моего бобового стебля, все $arg__myvars отображаются как пробелы.
add_header Link '<https://$host/api/oembed/?format=jsonamp;url=https://www.mysite.com/share?_did=$arg__did&_ddid=$arg__ddid&_dv=$arg__dv>; rel="alternate"; type="application/json oembed"; title="$arg__title"';
Я отправляю точно такой же завиток обоим, и я вижу аргументы строки запроса в журналах nginx… так что не похоже, что они пропали или что-то в этом роде:
172.70.114.17 - - [14/Jun/2021:20:19:13 0000] "GET /path/foo?_did=dd0c6fed-b6a8-4c79-8d34-c99336acced3amp;_ddid=9dadb08b-f8e0-4707-b6cb-06efb9530f24 HTTP/1.1" 200 4404 "-" "curl/7.68.0" "x.x.x.x"
http://nginx.org/en/docs/http/ngx_http_core_module.html#var_arg_
Кто-нибудь видел что-нибудь подобное раньше?
Ответ №1:
Наконец, я нашел решение после многих попыток…
У меня было правило перезаписи дальше в блоке местоположения.
Оказывается, что не только перезапись изменяет arg_
встроенные переменные, но и порядок директив в конфигурации совершенно не имеет значения — перезапись всегда происходит до инициализации любой из переменных.
Комментарии:
1. Не совсем так. Для большинства директив порядок не имеет значения, но он не относится к директивам,
ngx_http_rewrite_module
включающимrewrite
одну. Вы можете прочитать главу внутренней документации по внедрению для получения дополнительной информации.