Como configurar o nginx para nomes de host não qualificados?

Como configurar o nginx para nomes de host não qualificados?

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

informação relacionada