Quiero eliminar los parámetros de URL antes de enviarlos a proxy_pass
Para la URL de solicitud de visitante: => https://example.com/?wanted1=aaa&unwanted1=bbb&unwanted2=ccc&wanted2=ddd
Luego elimina todos los parámetros no deseados a: => https://example.com/?wanted1=aaa&wanted2=ddd
Mi forma actual es así:
if ($args ~ ^(.*)&(?:unwanted1|unwanted2)=[^&]*(&.*)?$ ) { set $args $1$2; }Pero solo elimina 1 parámetro y nunca recurre. ¿Cómo resolver esto? Quiero modificar los $args.
Si desea recursividad, puede usar una rewrite...last desde dentro de un bloque de location . Nginx solo tolerará una pequeña cantidad de recurrencias (posiblemente diez iteraciones) antes de generar un error interno del servidor.
Por ejemplo:
location / { if ($args ~ ^(?<prefix>.*)&(?:unwanted1|unwanted2)=[^&]*(?<suffix>&.*)?$ ) { rewrite ^ $uri?$prefix$suffix? last; } ... } Tenga en cuenta que debe usar capturas con nombre, ya que las capturas numeradas se restablecen cuando se evalúa la declaración de rewrite .
Tenga en cuenta que la rewrite requiere un final ? para evitar que los argumentos existentes se agreguen al URI reescrito. Vea este documento para más detalles.