Digamos que eu tenha vários sites de interface do usuário da Web usados para monitorar serviços de back-end.
Eu gostaria de torná-los acessíveis na web (protegidos por Auth), mas idealmente agrupados em um subdomínio e acessíveis por meio de vários URLs como:
https://monitor.mydomain.com/my-service-monitor/
Usando nginx, se eu usar uma regra de reescrita como
server {
listen 443 ssl;
server_name monitor.mydomain.com;
# auth stuff here...
location /my-service-monitor/ {
rewrite ^/my-service-monitor(/.*)$ $1 break;
proxy_pass http://my-service-monitor;
}
}
o que acontece é que o redirecionamento funciona, mas como todo o conteúdo estático se refere à URL raiz, não aparece como esperado (porque o site de back-end está gerando HTML olhando para a raiz/url, não para a URL relativa monitor.meudomínio .com/my-service-monitor/...
Como posso corrigir esse problema ou existe uma solução mais fácil para isso? (Eu poderia usar vários subdomínios, mas isso é muito fora da exposição IMO)
Eu estava pensando em redirecionar (com um retorno 301 ...) para o URL raiz do subdomínio, mas em uma porta diferente e, em seguida, adicionar um bloco de servidor ouvindo nessa porta proxy para o servidor, mas sinto que isso vai ser problemas com autenticação
Qualquer visão seria apreciada.
Você precisa ensinar seu aplicativo de back-end a gerar URLs corretos para a página. Existem pessoas que estão, aparentemente, escrevendo código lua personalizado para modificar o HTML retornado de dentro do nginx, mas honestamente eu recomendo evitar isso porque é insano.
Acabei atribuindo a cada site uma porta diferente, no mesmo subdomínio
o problema é que o bloco do servidor deve incluir a porta no server_name. No começo, eu só tinha o valor de escuta listando a porta, mas não funcionaria com vários sites no mesmo server_name, então é preciso