Me gustaría tener nginx configurado como un proxy inverso siguiendo estas reglas:
http://www.example.com/home/{x}/{y}//index.html?zvalue={z}&a=1&b=2&c=3 etc...apoderado de
http://www.example2.com/home/{x}/{y}/{z}/index.html?a=1&b=2&c=3 etc...Básicamente, el valor de la cadena de consulta de {z} se establece como parte de la ruta. Todos los demás parámetros de consulta, como a,b,c,d, etc., deben reenviarse como se muestra en el ejemplo.
¿Cuáles son las configuraciones que necesito poner en nginx?
La manipulación de la cadena de consulta se realiza mejor mediante un map con capturas con nombre. Vea este documento para más detalles.
Por ejemplo:
map $request_uri $proxy { default 0; ~*^(?<prefix>/home/.*)/index.html\?zvalue=(?<zvalue>[^&]+)&(?<suffix>.*)$ $prefix/$zvalue/index.html?$suffix; }Obviamente, la expresión regular debe coincidir con sus requisitos exactos, y lo anterior fue solo una prueba de concepto.
Puede usar la variable con una instrucción proxy_pass , dentro de un bloque if , dentro de una location existente. Vea este documento para más detalles.
Por ejemplo:
location / { proxy_pass http://example.com; if ($proxy) { proxy_pass http://example.com$proxy; } } Cualquier solicitud que no esté sujeta al map será aprobada de forma transparente por la primera instrucción proxy_pass .