지금 클라우드플레어 적용한지 1시간은 지났습니다. 다 이상없는데 선택적 ssl 사용시 ssl이 사용되는 페이지에서 문제가 발생합니다.
https://gist.github.com/kijin/25be59ac4b0d7c5ef722
class FixCloudFlare
{
/**
* CloudFlare에서 사용하는 IP 대역 목록
* 참고: https://www.cloudflare.com/ips
*/
public static $cf_ip_ranges = array(
'103.21.244.0/22',
'103.22.200.0/22',
'103.31.4.0/22',
'104.16.0.0/12',
'108.162.192.0/18',
'131.0.72.0/22', // 2016년 추가
'141.101.64.0/18',
'162.158.0.0/15',
'172.64.0.0/13',
'173.245.48.0/20',
'188.114.96.0/20',
'190.93.240.0/20',
'197.234.240.0/22',
'198.41.128.0/17',
'199.27.128.0/21',
);
/**
* CloudFlare를 통해 방문한 경우, 방문자 IP와 HTTPS 사용 여부를 파악한다
*/
public static function fixVisitorInfo()
{
foreach (self::$cf_ip_ranges as $range)
{
if (self::inRange($_SERVER['REMOTE_ADDR'], $range))
{
if (isset($_SERVER['HTTP_CF_CONNECTING_IP']))
{
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];
}
if (strpos($_SERVER['HTTP_CF_VISITOR'], 'https') !== false)
{
$_SERVER['HTTPS'] = 'on';
}
return true;
}
}
return false;
}
/**
* IPv4 주소가 IP 대역에 포함되어 있는지 확인하는 함수
*/
public static function inRange($ip, $range)
{
list($range, $netmask) = explode('/', $range);
$ip = ip2long($ip) & (0xffffffff << (32 - $netmask));
$range = ip2long($range) & (0xffffffff << (32 - $netmask));
return $ip == $range;
}
}
/**
* 위에서 선언한 클래스를 호출해 준다
* 이거 빼먹으면 안되는거 알죠?
*/
FixCloudFlare::fixVisitorInfo();
위 내용을 config.user.inc.php 파일의 내용에 추가는 해 줬습니다.
좀더 기다려 봐야 하는건가요 ???
사이트에 보안 연결할 수 없음
mygateway.link에서 잘못된 응답을 전송했습니다.