website preso no loop de redirecionamento depois de usar por trás do cloudflare

1

meu site link , depois de configurar o ssl, recebo 302 loop de redirecionamento. Aqui está o arquivo htaccess

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

   # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

Aqui está a configuração do Apache para http:

<VirtualHost *:80>
   ServerName stage.issufy.com
    Redirect / https://stage.issufy.com
   DocumentRoot /var/www/html/stage.issufy.com

   <Directory "/var/www/html/stage.issufy.com">
        Options FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
   </Directory>

   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =stage.issufy.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
</VirtualHost>

e aqui está a configuração ssl:

<IfModule mod_ssl.c>
<VirtualHost *:443>
   ServerName stage.issufy.com
   DocumentRoot /var/www/html/stage.issufy.com
   <Directory "/var/www/html/stage.issufy.com">
        Options FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
   </Directory>
   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLCertificateFile /etc/letsencrypt/live/stage.issufy.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/stage.issufy.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

O site funciona bem sem nuvens, mas assim que o cloudflare é ativado, ele gera erros de redirecionamento 302.

aqui está o log de erros

172.68.51.31 - - [17/Jan/2017:18:24:18 +0000] "GET / HTTP/1.1" 302 539 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Dragon/52.15.25.665 Chrome/52.0.2743.82 Safari/537.36"
172.68.51.31 - - [17/Jan/2017:18:24:18 +0000] "GET / HTTP/1.1" 302 538 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Dragon/52.15.25.665 Chrome/52.0.2743.82 Safari/537.36"
172.68.51.31 - - [17/Jan/2017:18:24:18 +0000] "GET / HTTP/1.1" 302 538 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Dragon/52.15.25.665 Chrome/52.0.2743.82 Safari/537.36"
172.68.51.31 - - [17/Jan/2017:18:24:19 +0000] "GET / HTTP/1.1" 302 538 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Dragon/52.15.25.665 Chrome/52.0.2743.82 Safari/537.36"
172.68.51.31 - - [17/Jan/2017:18:24:19 +0000] "GET / HTTP/1.1" 302 539 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Dragon/52.15.25.665 Chrome/52.0.2743.82 Safari/537.36"
172.68.51.31 - - [17/Jan/2017:18:24:19 +0000] "GET / HTTP/1.1" 302 538 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Dragon/52.15.25.665 Chrome/52.0.2743.82 Safari/537.36"
172.68.51.31 - - [17/Jan/2017:18:24:20 +0000] "GET / HTTP/1.1" 302 539 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Dragon/52.15.25.665 Chrome/52.0.2743.82 Safari/537.36"
172.68.51.31 - - [17/Jan/2017:18:24:20 +0000] "GET / HTTP/1.1" 302 539 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Dragon/52.15.25.665 Chrome/52.0.2743.82 Safari/537.36"
    
por Farhan 17.01.2017 / 18:53

3 respostas

1

Se você estiver usando a oferta Flexible SSL da Cloudflare, seu servidor da Web de origem verá o tráfego não criptografado na porta 80.

Na ordem dois resolver isso, você tem algumas opções:

  • Defina o modo SSL do Cloudflare como Completo ou Completo (Estrito) se a sua origem o suportar. Você pode até mesmo acessar o serviço Origin CA da Cloudflare para obter um certificado SSL gratuito para seu servidor da Web.
  • Instale o Mod_Cloudflare para o Apache, o que garantirá que o Cloudflare atua de forma transparente - incluindo a gravação de IPs corretamente ou a correção da variável de ambiente SSL para conta para SSL flexível.
  • Configure o Apache para considerar X-Forwarded-Proto (o que revela o que o usuário está se conectando ao Cloudflare como).
por 24.01.2017 / 13:28
0

Parece que o nginx do Cloudflare está confuso devido a alguma regra de redirecionamento:

HTTP/1.1 302 Found
Date: Tue, 17 Jan 2017 18:18:09 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: keep-alive
Set-Cookie: __cfduid=da71659f540fb5dad0c47d48669012aa61484677089; expires=Wed, 17-Jan-18 18:18:09 GMT; path=/; domain=.issufy.com; HttpOnly
Location: https://stage.issufy.com
Server: cloudflare-nginx
CF-RAY: 322bcedefcc859d2-VIE

Você já tentou desabilitar completamente o seu arquivo .htaccess e depois adicionar novamente regra a regra para eliminar o problema?

    
por 17.01.2017 / 19:19
0
Redirect / https://stage.issufy.com

Este parece ser o único redirecionamento 302 (temporário) na sua configuração.

Como o SSL CloudFlare é implementado? Se você estiver usando o CloudFlare como um proxy frontend que lida com o SSL (a única opção na versão gratuita AFAIK), então seu site ainda exibe conteúdo em HTTP (porta 80) para CloudFlare e a conexão é criptografada do CloudFlare para o cliente. Nesse caso, o redirecionamento acima resultaria de fato em um loop de redirecionamento 302. (Isso normalmente deve ser implementado como um 301. Por exemplo, Redirect 301 ... )

Se este for o caso, há alguns cabeçalhos de solicitação HTTP adicionais que você pode verificar para ver se o cliente está acessando seu site (ou melhor, CloudFlare) por HTTPS ou não.

RewriteEngine on
RewriteCond %{SERVER_NAME} =stage.issufy.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]

Incidentalmente, isso está tentando fazer a mesma coisa que sua única diretiva Redirect acima (embora permanentemente ). Use um ou outro, não ambos.

De preferência, você usaria uma única diretiva Redirect 301 (mod_alias). No entanto, se você precisar verificar os cabeçalhos de solicitação HTTP do proxy para determinar o HTTPS, será necessário mod_rewrite.

    
por 17.01.2017 / 20:52