2016-02-02 1 views
14

Я пытаюсь настроить NGINX и cloudflare. Я читал об этом в Google, но ничего не решил мою проблему. Моя облачная активность активна в данный момент. Я удалил все правила страницы в cloudflare, но до того, как domain.com и www.domain.com использовали HTTPS. Я думал, что это может вызвать проблему, поэтому я удалил ее. Вот мой default NGINX файл, с целью разрешения доступа только по имени домена и запретить доступ по значению IP сайта:Cloudflare и nginx: слишком много перенаправлений

server{ 

    #REDIRECT HTTP TO HTTPS 

    listen 80 default; 
    listen [::]:80 default ipv6only=on; ## listen for ipv6 
    rewrite^https://$host$request_uri? permanent; 

} 

server{ 

    #REDIRECT IP HTTPS TO DOMAIN HTTPS  

    listen 443; 
    server_name numeric_ip; 
    rewrite^https://www.domain.com; 

} 

server{ 

    #REDIRECT IP HTTP TO DOMAIN HTTPS 

    listen 80; 
    server_name numeric_ip; 
    rewrite^https://www.domain.com; 

} 

server { 

     listen 443 ssl; 
     server_name www.domain.com domain.com; 
     #rewrite^https://$host$request_uri? permanent; 
     keepalive_timeout 70; 

     ssl_certificate  /ssl/is/working.crt; 
     ssl_certificate_key /ssl/is/working.key; 

     ssl_session_timeout 1d; 
     ssl_session_cache shared:SSL:50m; 

     #ssl_dhparam /path/to/dhparam.pem; 

     ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
     ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM$ 
     ssl_prefer_server_ciphers on; 

     add_header Strict-Transport-Security max-age=15768000; 

     (...) more ssl configs 

Что может быть выключен? Я привожу информацию о mroe, если необходимо ...

+1

Cloudflare имеет разные режимы SSL - гибкие, строгие и т. Д. - вы пытались их изменить? Также вы можете показать вывод curl -I http://www.domain.com? –

+0

@DenisMysenko Я получаю 301. Я думаю, что я изменил параметры ssl в cloudflare, да ... Я включил HSTS, но также отключил его, подумав, что это может вызвать проблему, но это все еще не работает.Я пробежал все режимы ssl, все еще не удалось. Что именно я мог потерять? – Fane

+0

@DenisMysenko Не знаю, Деннис? – Fane

ответ

34

После опросов выяснилось, что это связано только с Cloudflare. Потому что перед переходом на Coudflare у меня не было проблемы с перенаправлением.

В моем случае было просто исправить это. Выберите [Crypto] и выберите Full (строгое), как на изображении.

enter image description here

Действительно, вы можете попробовать это, прежде чем любые другие действия.

+2

Я столкнулся с этой проблемой при размещении сайта на Firebase, который по умолчанию работает через https/ssl. Это вызывало бесконечный цикл. – uniquelau

+0

Работает ли он с планами бесплатного уровня –

+0

@sanjaypatel да это –

10

Эти вопросы с переадресацией на выезд постоянно появляются!

Обычно проблема заключается в том, что 301 Moved Permanently ответы часто кэшированных в браузерах «для хорошего», и часто не способ CtrlR ни CtrlСдвигR из , чтобы очистить весь кеш. (Это одна из причин, почему я часто предпочитают 302 Found/302 Moved Temporarily вместо этого, особенно на стадии разработки, так как 302 ответы, как правило, не кэшируются на всех по умолчанию.)

Кроме того, если вы имели HSTS в прошлом, и он был успешно установлен и тихо установлен браузером под капотом и никогда не был явно очищен и еще не истек, тогда браузер никогда не будет делать последующие запросы за http:// до тех пор, пока не будет очищена политика - все запросы всегда будут закончены https://.

Что касается размещения CloudFlare в миксе, разве это не облегчает необходимость иметь так много разных определений серверов и перенаправления в первую очередь, так как ваш IP-адрес должен быть скрыт? Я не уверен, что это хорошо, чтобы скрыть ваш IP-адрес за CloudFlare, но открыто раскрывать имя домена, которое он обслуживает для любого, кто делает глобальное интернет-сканирование.

Как вы уже побежал через все «режимы SSL», предлагаемых CloudFlare, я хотел бы предложить, чтобы изменить все ваши 301 permanent перенаправляет на 302 временных redirect с (если не удалить все это в целом, в первую очередь), ясно кеш браузера, а затем повторите попытку обхода параметров ssl. :-)

+0

Просто меняя мою перенаправление на 302 исправил проблему для меня. Благодаря! –

+0

Ваше решение просто не работало в моем случае, и на самом деле 301 не имеет альтернативы. это и есть. – prosti

+0

@prosti, мое решение сработало для многих людей; ОП столкнулся с проблемой обхода вокруг ВСЕХ этих вариантов в облачной среде, и ни один из них не работал для него в то время, потому что ... см. мое решение! – cnst

1

Перейдите к разделу «Правила страницы» и проверьте, есть ли правило «всегда переадресовывать на https». У меня было это по умолчанию.