Nginx não está redirecionando, mas está funcionando

3

Esta é minha primeira configuração com nginx e estou usando para proxy para nodejs. HTTP está na porta 3000 e HTTPS está na porta 3001.

Se eu for para o link , ele carrega as páginas comuns não seguras. Se eu for para o link , ele carrega as páginas seguras. Mas eu quero redirecionar de não-https para https.

O que há de errado com minha configuração? Este é todo o arquivo domain.conf que estou usando.

server {
    listen 80;
    server_name test.domain.com
    return 301 https://test.domain.com$request_uri;
}

server {
    listen 443 ssl;

    server_name test.domain.com;

    ssl_certificate /etc/nginx/ssl/domain.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

   location / {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header HOST $http_host;
      proxy_set_header X-NginX-Proxy true;

      proxy_pass https://127.0.0.1:3001;
      proxy_redirect off;
   }
}

Eu reiniciei o nginx várias vezes.

Obrigado!

    
por romo 02.07.2014 / 20:07

3 respostas

1

Você pode usar a reescrita no seu bloco de servidor http

server {
    listen 80;
    server_name test.domain.com;
    rewrite ^ https://$server_name$request_uri? permanent;
}
    
por 04.07.2014 / 04:29
1

Ausente ";" no final da linha. (ou apenas uma cópia / pasta quebrada?)

    server_name test.domain.com;

Eu acho que você tem outro server_block operando no servidor padrão que substitui este sem nome de servidor válido

Dicas:

  1. Se você deseja capturar todas as solicitações http com um bloco de servidores global, use default_server :

    listen 80 default_server;
    
  2. Você pode usar mais variáveis;)

    return 301 https://test.domain.com$request_uri;
    

    para

    return 301 https://$host$request_uri;
    

    Não use reescrita, o retorno é mais rápido.

por 06.01.2017 / 08:57
-1

Adicione essa linha na configuração da porta 80 para o redirecionamento automático para https com params, remova o retorno e ajuste a porta, se necessário.

if ($http_x_forwarded_proto != 'https') {
  #rewrite ^(.*) https://$host$1 redirect;
}
    
por 06.02.2017 / 14:24