
Estou configurando o nginx como proxy reverso. Eu só usei o Apache antes e sem hosts virtuais.
Quero que meus usuários possam acessar vários serviços da Web da intranet simplesmente digitando o nome do serviço na barra de endereço. Por exemplo, digite "timesheets" em vez de "timesheets.intranet.local".
Em uma máquina cliente, se eu usar "wget" ou um navegador para acessar o FQDN do site (timesheets.intranet.local), estará tudo bem.
Em uma máquina cliente, se eu usar "wget" ou um navegador para acessar o nome de host simples do site (quadros de horários), ele falhará.
Se eu usar "wget" localmente na máquina do servidor nginx, ambos funcionarão bem.
A configuração do meu site é semelhante a:
server {
server_name timesheets timesheets.intranet.local;
location / {
proxy_pass http://127.0.0.1:8080;
}
listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
ssl_certificate /root/timesheet.crt;
ssl_certificate_key /root/timesheet.key;
}
A resolução de nomes não é o problema. "wget" na máquina cliente resolve corretamente o endereço IP, mas ainda não consegue recuperar a página.
Responder1
Ao configurar o proxy reverso, você deve prestar atenção não apenas à configuração do proxy, mas também considerar a configuração de um serviço por trás dele.
Não apenas o proxy deve aceitar um nome em seu host virtual, mas também deve emitir um cabeçalho Host que é esperado para o backend. Nesse caso, a maneira mais fácil é configurar o proxy e um back-end para aceitar um nome de host curto e não qualificado.
Uma maneira alternativa pode ser substituir qual proxy de cabeçalho do host está enviando para um back-end. Então você só precisa do seu back-end para servir apenas esse nome de host. Veja esta respostahttps://stackoverflow.com/questions/14352690/change-host-header-in-nginx-reverse-proxy