Temos um aplicativo existente do IIS que estava sendo executado com o Helicon APE para reescrever URLs usando as regras existentes do Apache. Este é um exemplo:
RewriteRule ^/webapp/([^/]*)/([^/]*)(/.+)? /webapp/$4?$2=$3 [NC,L,P,QSA]
Para essas regras, um URL original como /webapp/f6/3/gx/1/default.htm
é transformado em /default.htm?f6=3&gx=1
. Isso suporta um número variável de caminhos intermediários no APE (aparentemente também no Apache).
Como o APE não escala bem e trava sob carga, comecei a definir um NGINX que fará as reescritas e fará o balanceamento de carga para os servidores IIS na parte de trás.
Um problema que encontrei: a mesma regra para reescrever o nginx não funciona da mesma maneira; Eu tive que transformá-lo para obter correspondência:
rewrite ^/webapp/(.*)/([^/]+).htm /webapp/$2?$1;
que, na verdade, para /webapp/f6/3/gx/1/default.htm
retorna /webapp/default.htm?f6/3/gx/1
.
Eu tenho tentado encontrar uma maneira de fazer o nginx para converter elementos de caminho /x/y/g/z
em pares de string de consulta ?x=y&g=z
. O Apache parece torná-lo automaticamente, enquanto nginx não, e não consegue encontrar nada na documentação ou em outras questões neste site, ou StackOverflow.
Aparentemente, usando o mapa isso pode ser feito, mas não é possível encontrar um uso específico, e não sou especialista em nginx para fazer isso. Qualquer ajuda ou indicação. será bem-vindo.