0053 | ของแถม reverse proxy ipfix.php

เวลาใช้ reverse proxy จาก entry ที่แล้ว จะมีปัญหานิดหน่อย
คือ เว็บจะจับ ip ผิดพลาด .. ไปเป็นจับ ip server แทนซะงั้น

วิธีแก้ง่ายๆ ครับ เอา script ตัวนี้ไปลง แล้วแก้ option php นิดหน่อย

จะเอาไปลงที่ไหนให้ดู option ชื่อ open_basedir นะครับว่ามันมี folder ร่วมเป็น folder อะไรบ้าง
(อย่าง plesk ก็จะเป็น /tmp, DA ก็ /tmp เหมือนกัน) เพราะงั้น ก๊อปไปลงใน /tmp โลด
ตั้งชื่อว่า ipfix.php นะครับ
แล้วเปิด php.ini หา auto_prepend_file แล้วแก้เป็น
auto_prepend_file = /tmp/ipfix.php
เซฟแล้ว restart apache ครับ จบ

<?php
 
if (!empty($_SERVER["SERVER_ADDR"]) && !empty($_SERVER["REMOTE_ADDR"]) && $_SERVER["SERVER_ADDR"] == $_SERVER["REMOTE_ADDR"] && !empty($_SERVER["HTTP_X_FORWARDED_FOR"])) {
 
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");
 
$refip = explode(",", $_SERVER["HTTP_X_FORWARDED_FOR"]);
 
$_SERVER["REMOTE_ADDR"] = trim($refip[count($refip) - 1]);
putenv("REMOTE_ADDR=".$_SERVER["REMOTE_ADDR"]);
if (!empty($HTTP_SERVER_VARS['REMOTE_ADDR']))
	$HTTP_SERVER_VARS['REMOTE_ADDR'] = $_SERVER["REMOTE_ADDR"];
if (function_exists('apache_setenv'))
        @apache_setenv("REMOTE_ADDR", $_SERVER["REMOTE_ADDR"]);
$_SERVER["HTTP_X_FORWARDED_FOR"] = "";
for ($i=0; $i<count($refip) - 1; $i++) {
$_SERVER["HTTP_X_FORWARDED_FOR"] .= ", ".trim($refip[$i]);
}
if (!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
$_SERVER["HTTP_X_FORWARDED_FOR"] = substr($_SERVER["HTTP_X_FORWARDED_FOR"], 2);
else
unset($_SERVER["HTTP_X_FORWARDED_FOR"]);
 
}
?>