Posts Tagged ‘PHP’

แก้ปัญหา REMOTE_ADDR ใน Reverse Proxy

Posted by อัทศักดิ์ วงศ์กิตตะ on Thursday, February 19th, 2009

สวัสดีครับ วันนี้จิบเบียร์แล้วก็มานั้งทบทวนเรื่องงานที่ทำ  พอดีมีเรื่องเล็กๆน้่อยๆ ที่ผมเองทำและน่าจะเป็นประโยช์กับเพื่อนๆ  เกี่ยวกับการตั้ง Reverse Proxy กับปัญหา เรื่อง IP ที่ show ใน app ของเรา

ปกติเวลาเราเขียน Apps หรือ พวกฟรี Webboard ทั้งหลายจะมีการ Check IP จาก

$_SERVER['REMOTE_ADDR'] และ $_SERVER['HTTP_X_FORWARDED_FOR']  หากเจอตัวแปล HTTP_X_FORWARDED_FOR   ระบบจะทำการ Record  IP จาก  HTTP_X_FORWARDED_FOR ด้วย   แต่หากว่าบางโปรแกรมที่เขียน จะเก็บแค่   REMOTE_ADDR  ทำให้ IP ที่แสดงในโปรแกรมของเรา  เป็น IP ของ Reverse Proxy แทน
Continue reading “แก้ปัญหา REMOTE_ADDR ใน Reverse Proxy” »

PHP – 2 Way Encrypt by PKI

Posted by อัทศักดิ์ วงศ์กิตตะ on Friday, January 16th, 2009

ช่วงนี้ขยันครับกะจะปั่นบาความใหม่ๆสะหน่อย หลังจากไม่ได้เขียนมาสะนาน  วันนี้เอาเรื่องเกี่ยวกับ Developer บ้างผมเองเป็นทั้ง System,  Programing   เลยยกเรื่องการเ้ข้ารหัสข้อมูลที่เป็นแบบ  2 way คือสามารถ เข้ารหัส และถอดกลับมาได้  และมีความปลอดภัยสูง

PKI มาพูดเรื่อง PKI ก่อนนะครับ   ส่วนตัวผมเองไม่ได้เรื่อง IT มาเรื่อง PKI  ผมเองก็ได้แต่อ่านๆจากในเน็ต แล้วก็นำมาเล่าสู่กันฟัง    ท่าสามารถหาข้อมูลที่ลึงมากกว่านี้ได้จาก Link ข้างล่าง    “Public key infrastructure”  คือการเข้ารหัสข้อมูล โดยใช้  กุญแจ 2 ลูกคือ   Public Key และ Private Key       หากเราเข้ารหัสข้อมูลโดยใช้  Private Key     เราก็ต้องถอดรหัสโดยใช้  Public Key     ในทางกลับกัน ถ้าเข้ารหัสด้วย Public Key ก็ต้องใช้ Private Key ถอดรหัสเท่านั้น

ทีนี้มาพูดถึงความปลอดภัย   ตัว PKI เองสามารถเลือก bit การเข้ารหัสได้ตามที่เราต้องการ ตั้งแต่ 512, 1024, 2048  และสามารถเข้ารหัวได้สูงกว่านี้   ทำให้เป็นการยากที่จะถอดรหัสได้    ทุกๆวันนี้เราเองก็ใช้เทคโนโลยีนี้แทบทุกวัน โดยที่เราไม่รู้ตัว  อย่างบัตร SmartCard เองก็ใช้ PKI ในการเข้ารหัส หรือ Card UBC  เองก็ใช้เช่นกัน    อีกตัวอย่างคือ   เวลาเข้าเว็บไซด์ผ่าน https   ระหว่าง Web Server และ Browser ก็จะมีการเข้ารหัสข้อมูล โดยใช้เทคโนโลยี PKI    ในการเข้ารหัสเช่นกัน

Continue reading “PHP – 2 Way Encrypt by PKI” »

Apache 2.0 – Name Base VHost

Posted by อัทศักดิ์ วงศ์กิตตะ on Tuesday, July 22nd, 2008

พอไปอ่านกระทู้ใน thaibsd.com เลยกะต่อยอดเล็กน้อย หลังจากที่ติดตั้ง “Apache2.0 + PHP5 on FreeBSD” ก็ถึงครามาทำ Name Base Vhost ในรูปแบบของผม พูดถึงเรื่อง Vhosts มันทำได้หลายแบบ แต่ที่เราทำกันบ่อยๆก็ Name Base Host และ IP Base VHost

อะไรคือ “Name Base Vhost” ขอกล่าวถึง HTTP Protocol ละกันครับ เวลาที่ IE, Firefox ในเครื่องเ้้ราซึ่งเค้าเรียกรวมกันว่า Browser เข้าไปเว็บๆหนึ่ง เช่น เข้าไปที่ http://howtoconfig.com/index.php Browser ของเราก็จะสร้าง tcp connect ไปยัง IP ปลายทาง port 80 และส่ง
Continue reading “Apache 2.0 – Name Base VHost” »

Split MySQL Query แยก RO/RW

Posted by อัทศักดิ์ วงศ์กิตตะ on Sunday, June 8th, 2008

วันนี้มีปัญหาขึ้นมาครับ เนื่องจาก MySQL Cluster ที่ใช้งบานนั้นลองทดสอบความเร็วแล้วสู้ MySQL แล้วใช้ Local Engine ไม่ได้เลย งานนี้เลยต้องหาทางออกครับ ผมเลยไปมอง เรื่อง MySQL Replication หลังจาก Setup และ Tuning เสร็จ ก็มาลองทดสอบความเร็ว มัน Query เร็วกว่า MySQL Cluster หลายเท่าเลยครับ

ทีนี้ก็มาดูเรื่อง Codeing ปัญหาคือมันเป็นโปรแกรมที่เค้าเขียนมานานละ ผมเข้าไปแก้อะไรไม่ค่อยได้ หรือถ้าแก้จริงๆ อยาจจะเป็น Bug อีกก็ได้ คิดไปๆมาๆ อ่าเจอทางออกแล้ว

ปัญหา

  • MySQL Cluster ช้า ต้องไปใช้ MySQL Replication แทน
  • แก้ Code ลำบาก เพระา code ค่อนข้างมาก
  • Query ต้องเร็วและเพิ่ม MySQL Server ได้ในอนาคต

ทางแก้

  • MyQL-Proxy ส่วนนี้ผมลองเอามาใช้แล้วครับ ลอง Query ดูมันก็ยังช้ากว่า Connect เข้า DB ตรงๆถึง 5 – 10 เท่า
  • Edit Query ผมเลือกทางนี้ครับ แต่มันมีวิธีลักไก่หน่อย

แนวคิดคือต้องไม่ไปยุ่งกะ Code มาก ผมเลยทำการสร้าง php function ใหม่ขึ้นมาครับ โดยทำหน้าที่ check sql ก่อนที่จะ Query ว่าเป็น SELECT, UPDATE, INSERT, DELETE แล้วให้ function ที่สร้างขึ้นมา เลือกที่จะไป query กะ mysql เครื่องไหน

1. สร้าง function mysql_do_query

function mysql_do_query( $sql, $count_rw=null)
{
	global $conn_ro, $count_rw, $count_ro;
	if ( ! empty( $sql))
	{
		if ( ereg("^SELECT(.*)", strtoupper( $sql)))
		{
			$count_ro++;
			return mysql_query( $sql, $conn_ro);
		} else {
			$count_rw++;
			return mysql_query( $sql);
		}
	}
}

2. ทำการ edit *.php แล้วทำการ replace mysql_query -> mysql_do_query โดยผมใช้ คำสั่ง sed ใน shell script เพื่อแก้ไขไฟล์

#!/bin/bash
for fl in *.php; do
mv $fl $fl.old
sed 's/mysql_query/mysql_query/g' $fl.old > $fl
rm -f $fl.old
done

เสร็จแล้วก็รันครับ shell script จะทำการ find หา *.php แล้วทำการเปลี่ยน function ให้ ต่อไปเวลา ให้ programmer เขียน codeing ก็ให้ทำการ ใช้ function mysql_do_query() แทนครับ

Apache2.0 + PHP5 on FreeBSD

Posted by อัทศักดิ์ วงศ์กิตตะ on Wednesday, June 4th, 2008

ผ่านไปพักใหญ่ MySQL Cluster ก็ยังไม่ Start สะทีเลยถือโอกาศมาเขียน docs เรื่องการติดตั้ง Apache + PHP + Mysql ในรูปแบบของผมกันครับ ก่อนอื่นให้ทำการติดตั้ง MySQL ตามเอกสารนี้ครับ

1. ทำการ Update pors ครับ (แนะนำว่าให้ทำบ่อยๆ ใส่ crontab ไว้เลยก็ได้ครับ)

cvsup -g -L 2 /usr/share/examples/cvsup/ports-supfile -h cvsup.th.freebsd.org

2. ทำการติดตั้ง Apache 2.0

cd /usr/ports/www/apache20/
make all install clean WITH_SSL_MODULES=yes

Continue reading “Apache2.0 + PHP5 on FreeBSD” »