금일 blog web traffic 상황을 보고 깜짝 놀랐습니다.
이런 블로그가 아니었는데...
평소 20%대를 머무르던 traffic이 갑자기 80%를 육박했던 것입니다.
확인해 보니 특별히 page view나 방문자 수가 증가한 것도 아닌데 트래픽이 폭주해 버렸더군요.
호스팅 회사에 문제나 아니면 제 계정에 특정 file이 과도하게 access 되고 있지 않은지 log 확인을 문의 해 봤더니 제 계정에 관한 서비스는 log를 남기지 않는 다더군요.
자체적으로 문제점을 파악하기로 했지만 web page access는 아닌 것 같고 직접 file을 외부에서 link 시킨 듯 했습니다.
일단 .htaccess file을 생성해 업로드한 그림 파일에 대한 외부 링크를 모두 차단 해 버리고 나니 트래픽 증가가 거의 없어 지는 군요.
jpg,gif,png 파일에 대해서 4번째 줄에서 허용해 준 host에 대해서만 정상적으로 표현하게 해줍니다.
5번째줄은 무단 링크 했을시 표시해줄 page나 그림을 설정 할 수 잇습니다.
제 경우엔
라는 gif를 무단링크시 표시되게 적용 했습니다.
tattertools 사용시 .htaccess file의 위치는 upload file이 위치하는 "/tt/attach/1"로 했습니다.
개인에 따라 틀릴 수 있습니다.
현재 트래픽 95%로군요 아마 오늘 blog는 1시간이내에 트래픽 제한에 걸릴 듯 합니다.
무단 링크는 하지 맙시다.
<?
define ("WATERMARK", "watermark.jpg");
header("Content-type: image/jpeg");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
$pic = strip_tags( $_GET['image'] );
$image_url = urldecode($pic);
if (!@fopen($image_url, "r")) {
$dst_img = imagecreatefromjpeg(WATERMARK);
$res = imagejpeg($dst_img, "", 100);
die();
}
$file = pathinfo($image_url);
switch(strtoupper($file["extension"])) {
case "JPG":
$src_img = imagecreatefromjpeg($image_url);
break;
case "GIF":
$src_img = imagecreatefromgif($image_url);
break;
case "PNG":
$src_img = imagecreatefrompng($image_url);
break;
}
$src_w = imagesx($src_img);
$src_h = imagesy($src_img);
$portion = $src_h / $src_w;
$dest_w = 300;
$dest_h = round($dest_w * $portion);
$dst_img = imagecreatetruecolor($dest_w, $dest_h);
imagecopyresized($dst_img, $src_img, 0, 0, 0, 0, $dest_w, $dest_h, $src_w, $src_h);
$watermark = imagecreatefromjpeg(WATERMARK);
$watermark_w = imagesx($watermark);
$watermark_h = imagesy($watermark);
$overlay_img = imagecreatetruecolor($watermark_w, $watermark_h);
imagecopy($overlay_img, $watermark, 0,0,0,0, $watermark_w, $watermark_h);
imagedestroy($watermark);
$white = imagecolorallocate($overlay_img, 0xFF, 0xFF, 0xFF);
imagecolortransparent($overlay_img, $white);
$offsetX = $dest_w - $watermark_w - 3;
$offsetY = $dest_h - $watermark_h - 3;
imagecopymerge($dst_img,$overlay_img,$offsetX,$offsetY,0,0,$watermark_w,$watermark_h, 100);
imagedestroy($overlay_img);
$res = imagejpeg($dst_img, "", 100);
imagedestroy($dst_img);
?>