Цикл перенаправления SSL Nginx Cloudflare

У меня есть Universal SSL с CloudFlare. Я хотел настроить постоянное перенаправление SSL на своем Анонимном блоге.

Это было моей исходной конфигурацией. Это работает большое индивидуально использование http://example.com и https://example.com

server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;

server_name example.com; # Replace with your domain

root /usr/share/nginx/html;
index index.html index.htm;

client_max_body_size 10G;

location / {
    proxy_pass http://localhost:2368;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_buffering off;
}
}

Это - моя предпринятая конфигурация к для перенаправления от HTTP до HTTPS, но это приводит к циклу перенаправления

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

server {
   listen   443 ssl;
   ssl      on;
   ssl_certificate /etc/nginx/ssl/cert/example.crt;
   ssl_certificate_key /etc/nginx/ssl/private/example.key;
   ssl_session_cache  shared:SSL:10m;
   ssl_session_timeout 5m;
   server_name example.com; # Replace with your domain
   root /usr/share/nginx/html;
   index index.html index.htm;

   client_max_body_size 10G;

    location / {
       proxy_pass http://localhost:2368;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header Host $http_host;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_buffering off;
   }
}

Не совсем уверенный, почему его цикличное выполнение.

2
задан 31 March 2017 в 12:30
4 ответа

У меня недостаточно представителей, чтобы добавить комментарий выше, но я также столкнулся с этой проблемой, и единственный способ обойти ее - отключить CloudFlare для конкретной записи DNS, которая очевидно, не идеален.

Исходя из этого, похоже, что это проблема в том, как CloudFlare реализует свой универсальный SSL для записей DNS, для которых уже включен SSL (с перенаправлением с HTTP на HTTPS). Кроме того, похоже, что вы не можете отключить CloudFlare SSL для определенных записей DNS.

Извините, я не могу быть более полезным, но если я найду решение, я обязательно опубликую его здесь.

2
ответ дан 3 December 2019 в 10:45

Вдохновленный ответом Паскаля, я попытался изменить тип соединения между cloudflare и моим сервером с flexible ssl на full ssl . Для меня это работает таким образом.

Оглядываясь назад, это кажется логичным, потому что с гибким ssl поток таков:

  1. пользователь подключается через ssl к cloudflare
  2. cloudflare подключается через простой http к серверу сервер
  3. сервер выдает перенаправление в качестве ответа
  4. cloudflare перенаправляет ответ клиенту (перенаправление)
  5. полоскание и повторение

Если я включаю полный ssl , перенаправление не выполняется больше не происходит, потому что cloudflare подключается к серверу через ssl.

1
ответ дан 3 December 2019 в 10:45

У меня была та же проблема, и в итоге я установил оба url и urlSSL в config.js Ghost. Это не приведет к принудительному использованию SSL, но если пользователь заходит в блог через https, установка этого параметра гарантирует, что вся будущая навигация также будет осуществляться через https.

Раньше, если пользователь щелкнул сообщение в блоге, а затем щелкнул любая другая внутренняя ссылка, эта ссылка будет обслуживаться через http вместе со всеми другими будущими запросами. Установка свойства urlSSL как минимум устраняет это.

url: http://blog.example.com,
urlSSL: https://blog.example.com

Ссылки: http://support.ghost.org/config/#ssl

0
ответ дан 3 December 2019 в 10:45

Я только что столкнулся с этой же проблемой на моем экземпляре призрака и немного поговорил об этом здесь :

https://stackoverflow.com/questions/40816988/infinite-redirect-nginx/40817660#40817660

Оказывается, у меня было две проблемы с бесконечным перенаправлением [(┛◉Д◉) ┛ 彡 ┻━ ┻], один с моей конфигурацией сервера, а другой с моей конфигурацией облачной вспышки.

Чтобы использовать SSL с облачной вспышкой, вам необходимо:

  • Перейдите на вкладку Обзор> Сводка настроек> Нажмите SSL и измените SSL от «Гибкого» до «Полного (строгого)».
    • Это также можно найти на вкладке «Крипто»> «SSL»> «Щелкните SSL» и измените SSL с «Гибкий» на «Полный (строгий)».

Поскольку вы ссылаетесь на проход прокси с портом 2368 в вашем vHost, кажется логично, что у вас тоже может быть призрак. (Я понимаю, что это не единственное программное обеспечение, работающее на этом порту.)

  • Проверьте свой config.js и убедитесь, что url: указывает на http ] и , а не https .
0
ответ дан 3 December 2019 в 10:45

Теги

Похожие вопросы