O proxy reverso Nginx força 301 no subdomínio (e não deveria)

2

Estou usando o Nginx (1.4.3) para fazer o proxy reverso de um domínio e subdomínios. Eu instalei certificados SSL para lidar com o domínio principal (example.com) e alguns subdomínios (digamos test.example.com e mail.example.com). Por isso, usei naturalmente um retorno 301 para mover solicitações http para https.

server {
   listen 80 default_server;
   server_name example.com www.example.com;
   return 301 https://example.com$request_uri;
}

Funciona muito bem. Mas se eu introduzir outro subdomínio que não quero nos CERT SSL SSL (porque não tenho um certificado curinga e não preciso dele para este subdomínio). O Nginx ainda parece aplicar o 301 a ele, mesmo que o server_name tenha sido definido implicitamente. Já que é a 1.4.3, eu os divido na pasta conf.d .

Eu acho que está fazendo isso porque se eu limpar meu cache de navegador e navegar para o novo subdomínio (sd.example.com) ele funciona bem e não reescreve para https. Mas, se eu for ao site principal (example.com), a reescrita entra em ação, sou enviada para o link e não há problemas. Mas, se eu tentar voltar para o sd.example.com, eu serei reescrito no link e o grande erro do cromo vermelho será exibido.

Alguma idéia do porquê isso está acontecendo? Eu preferiria parar de bater minha cabeça por aqui.

    
por CP510 19.11.2013 / 02:36

1 resposta

2

postou respostas do comentário do OP

O problema foi causado pelo cabeçalho HSTS. No domínio principal, há o cabeçalho includeSubDomains in HSTS de entrada. Se um navegador visitar o domínio principal e receber esse cabeçalho de HSTS, o navegador forçará a conexão via HTTPS também no domínio principal e no subdomínio . Então, está bem claro que o nginx não causa o redirecionamento.

Se você não quiser usar o subdomínio HTTPS, a solução é remover includeSubDomains no cabeçalho da HSTS.

    
por 08.11.2014 / 02:55