• Форум посвящен самостоятельной (бесплатной) защите от ддос атак.
    Есть мануалы по настройке сервера от Ddos для сисадминов и готовые инструменты от ддос-атак для вебмастеров.

    Простое, эффективное, точное и проверенное бесплатное решение от мощных ддос-атак: PHP скрипт + Cloudflare, с панелью управления.

Cloudflare и Xenforo, сбивается сессия

M

mentor

New Member
#1
Настроил Cloudflare по вашей инструкции, возникли проблемы. Постоянно сбивается сессия когда входишь в админку. Пользователи тоже жалуются, что периодически вылетают. Гуглил, вижу что проблема возникает у многих, а решения так и не нашел. Где смотреть в настройках? Это кеширование надо настраивать?
 
Последнее редактирование модератором:
admin

admin

Администратор
Администрация
#2
У Cloudflare есть целая инструкция по настройке Xenforo. Вы можете создать CloudLare PageRule и исключить админку из кеширования, как советуют там. Но лучше настройте правильную передачи IP - из-за этого проблема возникает.

Дело в том, что после подключения через Клоудфларе, в переменной $_SERVER['REMOTE_ADDR'] содержится не IP пользователя, а IP клоудфлара. IP пользователя содержится в переменной $_SERVER['HTTP_CF_CONNECTING_IP'].
Добавьте этот код в начале исполняемого файла и проблема с сессиями должна исчезнуть.
Код:
if (isset($_SERVER['HTTP_CF_CONNECTING_IP']))
{
    $_SERVER['REMOTE_ADDR']=$_SERVER['HTTP_CF_CONNECTING_IP'];
}
 
DeathStar

DeathStar

Member
#4
Или в настройки nginx добавить в nginx.conf в секцию http {
#CloudFlare
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 104.16.0.0/12;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2c0f:f248::/32;
set_real_ip_from 2a06:98c0::/29;

актуальные IP адреса взять можно тут
https://www.cloudflare.com/ips-v4
https://www.cloudflare.com/ips-v6
 
DeathStar

DeathStar

Member
#5
Или в nginx.conf прописать в http секцию
include /etc/nginx/cf.conf;
поставить curl
apt-get install curl ( Debian \ Ubuntu )
yum install curl ( CentOS \ RedHat )
pkg install curl ( FreeBSD )
накатать такой скрипт для автообновления CF адресов

Код:
#!/bin/sh
curl_cmd=$(which curl)
echo "#CloudFlare" > /etc/nginx/cf.conf
for ip in $($curl_cmd https://www.cloudflare.com/ips-v4 ) ; do echo set_real_ip_from $ip\; >> /etc/nginx/cf.conf ; done
for ip in $($curl_cmd https://www.cloudflare.com/ips-v6 ) ; do echo set_real_ip_from $ip\; >> /etc/nginx/cf.conf ; done
/usr/sbin/service nginx reload
и закинуть его в cron на раз в сутки например ) Для обоих вариантов нужен модуль http_real_ip , который как правило в сборках Nginx уже присутствует ( проверить можно командой nginx -V )
 
Последнее редактирование модератором:
Сверху