Tengo una redirección de ubicación nginx configurada para redirigir /my_route a una página próximamente, pero permito que /my_route?db=preview pase al servidor proxy.
location /my_route { if ($arg_db != "preview") { rewrite ^ /coming-soon/ last; } <other location config for when db == preview> }Quiero agregar una capa adicional de complejidad, para admitir varios idiomas para la próxima página.
Configuración que rompe nginx, pero te da una idea:
location /my_route { if ($arg_db != "preview") { if ($arg_lang == "es") { rewrite ^ /coming-soon/index_es.html last; } rewrite ^ /coming-soon/ last; } <other location config for when db == preview> } Sé que if es malvado , por lo que estoy feliz de dejar de usar if , si eso es lo que se necesita, pero no sé en qué dirección mirar. Solo sé que nginx no admite declaraciones && , ni declaraciones if anidadas.
Podría usar un map para eliminar el bloque if interno.
Por ejemplo:
map $arg_lang $mylang { default /; es /index_es.html; } server { ... rewrite ^ /coming_soon$mylang last; ... }Vea este documento para más detalles.