J’utilise la variable nginx $arg_
pour obtenir les $arg_
url.
Mais je trouve que l’url est comme ‘ http://foobar.com/search?field-keywords=foobar ‘, $arg_field_keywords
ou $arg_field-keywords
ne fonctionnent pas.
Puis-je obtenir field-keywords
avec $arg_
?
Merci d’avance.
J’avais trouvé un article qui contenait un petit truc pour faire face à votre problème.
TLDR:
Vous pouvez remapper des variables avec des noms complexes en utilisant le module de carte comme suit:
map $is_args $http_x_origin { default $http_x-origin; }
L’astuce est que la carte n’parsing pas complètement ses arguments. La syntaxe est la suivante: map AX {default Y; }, avec:
- Une variable, de préférence une variable qui ne déclenche pas beaucoup de traitement interne (puisque les configurations nginx sont déclaratives, l’utilisation d’une variable l’évalue). J’utilise $ is_args parce que c’est peu coûteux à calculer.
- X est le nom de la nouvelle variable que vous allez créer, c’est-à-dire la cible de la carte.
- Y est le nom de la variable à laquelle vous voulez accéder. À ce stade, il peut contenir des tirets, car la carte effectue sa propre parsing.
Je suppose que cela pourrait fonctionner avec $args_
aussi.
En utilisant openresty / 1.11.2.4, la méthode de la map
mentionnée dans la réponse acceptée ne fonctionnait pas pour moi. Mais comme openresty est livré avec le module Lua précompilé, j’ai pu le faire en utilisant le morceau de code suivant:
set $dataArg ''; set_by_lua_block $dataArg { return ngx.req.get_uri_args()["data-arg"] } proxy_cache_key $scheme$proxy_host$uri$is_args$dataArg;