Redirecionar loop usando SSL flexível do cloudflare

9

Estou tentando implementar o SSL flexível fornecido pela CloudFlare em meu site.

Aqui está minha configuração do nginx:

# PHP-FPM upstream; change it accordingly to your local config!
upstream php-fpm {
    server 127.0.0.1:9000;
}

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

server {
    ## Listen ports
    listen 443;

    # use _ if you want to accept everything, or replace _ with domain
    server_name example.com www.example.com;

    location / {
      #proxy_set_header        X-Forwarded-Proto $scheme;
      proxy_set_header X_FORWARDED_PROTO https;
      proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header  Host $http_host;
      proxy_set_header  X-Url-Scheme $scheme;
      proxy_redirect    off;
      proxy_max_temp_file_size 0;
    }

(...rest of config...)

No entanto, quando tento me conectar ao site (Wordpress), recebo um loop de redirecionamento (chrome: ERR_TOO_MANY_REDIRECTS). Como configuro o nginx para evitar isso?

    
por Deqq 21.12.2014 / 00:13

2 respostas

25

SSLl flexível do Cloudflare significa a conexão entre o cloudflare e seu servidor é sempre sobre http:

Dadoisso-oúnicoblocodeservidornaquestãodarelevânciaéeste:

server{listen80;server_nameexample.comwww.example.com;return301https://$server_name$request_uri;}

Deveseróbvioporqueissoresultaemumloopderedirecionamento,existemduassoluçõesparaforçarasconexõeshttpsusandosuasoluçãosslflexível.

UseasregrasdapáginadoCloudflare

Seoacessoaoservidorforexclusivamenteviacloudflare,vocêpodeusaropróprio regras de página para modificar as respostas de um domínio, subdomínio ou qualquer padrão de URL:

Umadasopçõeséforçarhttps:

Teste$http_x_forwarded_proto

Hámomentosemquevocêpodequererevitarousoderegrasdepágina(devemserrarasouapenastransicionais).Paraessescenários,épossíveltestaroprotocoloencaminhadoeredirecionarcombasenisso:

server{listen80;server_nameexample.comwww.example.com;if($http_x_forwarded_proto="http") {
     return 301 https://$server_name$request_uri;
   }

   ... directives to generate a response
}
    
por 21.12.2014 / 11:44
5

Isso pode corrigir o problema se você tiver o certificado SSL válido no seu. Caixa [Crypto] e selecione Full (strict) como na imagem.

Realmente não há necessidade de atualizar o arquivo de configuração do servidor da Web para Nginx.

    
por 01.10.2016 / 22:32