O primeiro passo é fazer o proxy dos pedidos do Nginx para o seu outro servidor. Em um alfa:
location /ombre/nms {
proxy_pass http://b-beta:8980/opennms
}
A partir daqui, as configurações restantes são muito dependentes do funcionamento do OpenNMS (com o qual não estou familiarizado).
A próxima parte é lidar com redirecionamentos. Se as solicitações vierem do lado do cliente (por exemplo, seus formulários POST para um URL no b-beta ou se houver links apontando para o b-beta), será necessário resolvê-los separadamente do Nginx. Lembre-se de que o navegador não está ciente do proxy - portanto, ele enviará solicitações sem modificação para o servidor.
Se você olhar a página de login do OpenNMS (por exemplo, a demonstração ao vivo ). O formulário de login POSTs para opennms/j_spring_security_check
. Um login bem-sucedido resulta em:
- um redirecionamento 302 para
opennms
, seguido por - um redirecionamento 302 para
opennms/frontPage.htm
seguido por - um redirecionamento 302 para
opennms/index.jsp
.
Usando o Nginx, você não pode (facilmente) alterar o caminho para o qual os POSTs do formulário (que provavelmente é uma opção de configuração do OpenNMS), mas você pode alterar os redirecionamentos que retornam ao navegador. Existem algumas diretrizes a serem consideradas:
proxy_redirect
: Se você precisar modificar o redirecionamento (isto é, o cabeçalho do local) sendo retornado ao navegador
proxy_redirect http://b-beta:8980/opennms/ http://a-alpha/ombre/nms/;
Isso deve ser equivalente a proxy_redirect default
se estiver contido no bloco de localização acima.
rewrite ... break
: Se você precisar modificar o caminho que está sendo enviado para o opennms (break significa que somente o bloco de localização atual será processado).
rewrite /ombre/nms/a/(.*) /opennms/b/$1 break;
proxy_set_header
: se você precisar modificar alguns dos cabeçalhos enviados para o back-end.
Por padrão, o Nginx definirá o cabeçalho do host como $proxy_host
. Se você configurar o OpenNMS no b-beta para atuar como se estivesse rodando em a-alpha (por exemplo, dizer que o domínio é o alfa, os bloqueios do servidor de configuração correspondem a alfa, etc), então você precisará passar Cabeçalho do host como é recebido por um alfa em vez de deixar o Nginx modificá-lo:
proxy_set_header Host $host;