loop de redirecionamento nginx com proxy_pass e $ http + CloudFlare

1

Minha configuração nginx funciona muito bem até eu adicionar um redirecionamento que força o HTTPS. A configuração de trabalho antes do redirecionamento é:

server {
  listen 80;
  listen 443 default_server ssl;
  server_name my-domain.com www.my-domain.com;
  client_max_body_size 5M;

  location / {
    proxy_pass http://localhost:3000;
  }
}

Estou executando um aplicativo na porta 3000 do servidor e quero exibi-lo no meu domínio na porta 80 e na porta 443 (http e https). No entanto, eu também quero redirecionar os usuários para HTTPS quando eles tentam acessá-lo via HTTP. Eu usei esta resposta para configurar:

server {
  listen 80;
  server_name my-domain.com www.my-domain.com;
  client_max_body_size 5M;
  return 301 https://$server_name$request_uri;
}

server {
  listen 443 default_server ssl;
  server_name my-domain.com www.my-domain.com;
  client_max_body_size 5M;

  location / {
    proxy_pass http://localhost:3000;
  }
}

mas isso causa um loop de redirecionamento. Eu admito que sou relativamente novo no nginx, então se alguém pudesse me colocar em recursos que poderiam explicar isso, então seria muito apreciado. Meu palpite é que isso tem a ver com o uso da localização e / ou proxy_pass, mas investigar os documentos não levou a insights mais profundos.

Outra coisa a notar é que esse aplicativo está sendo enviado pela CloudFlare.

    
por jamesplease 30.11.2014 / 17:17

1 resposta

0

Isso está resolvido. Eu colei na minha configuração original do nginx e usei uma regra de página do CloudFlare para forçar o HTTPS.

A regra usada foi:

http://*gistbook.io/* = > use sempre HTTPS

    
por 30.11.2014 / 23:17