Em uma configuração de proxy reverso, o Nexus procura a presença de vários cabeçalhos X-Forwarded-*
HTTP para determinar seu URL base. Contanto que você defina esses cabeçalhos corretamente, ele deve produzir as URLs corretas, sem necessidade de regras de saída.
O truque é saber quais passar - a documentação do proxy reverso não parece particularmente claro sobre o que são, eles apenas oferecem amostras de nginx e Apache sem muita explicação. Eu suspeito que o nginx e o Apache configuram os cabeçalhos necessários automaticamente, e o Nexus os adotou. Isso tudo é um "padrão de fato" em oposição a um padrão formal, portanto, enquanto você vê uma quantidade razoável de consistência na qual os cabeçalhos são suportados pelos aplicativos, isso não é garantido.
Estes são os dois que eu precisava no meu caso:
-
X-Forwarded-Host
informa ao Nexus o host original solicitado pelo cliente. Isso seria "nexus.mycompany.com" no seu exemplo. -
X-Forwarded-Proto
pode ser usado para informar ao Nexus que a solicitação original (ou seja, para o seu proxy) era HTTPS, mesmo que o próprio Nexus não esteja executando HTTPS. Se o seu proxy não for HTTPS, você não precisará disso.
Os cabeçalhos são definidos na seção Variáveis do servidor - substitua os traços por sublinhados e insira um "HTTP_" na frente, portanto X-Forwarded-Host
se torna HTTP_X_Forwarded_Host
.
Assim, a regra ficaria assim:
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="http://localhost:8081/{R:1}" />
<serverVariables>
<set name="HTTP_X_Forwarded_Proto" value="https" />
<set name="HTTP_X_Forwarded_Host" value="nexus.mycompany.com" />
</serverVariables>
</rule>
Novamente, retire o Proto se o seu proxy reverso não for HTTPS.
Com esses cabeçalhos definidos, você não precisará da regra de saída, o que, como você observou, não consegue capturar muita coisa acontecendo nos arquivos JavaScript.
Como um aparte final, você pode considerar deixar esse recurso de URL Base lá - de acordo com os documentos ele é usado para algumas coisas.