OSX 10.10 Yosemite + Apache 2.4 + AH01630: client denied by server configuration

แก้ไขค่า httpd.conf or httpd-vhosts.conf ด้วย “Require all denied”

<Directory />
AllowOverride none
Require all denied
</Directory>

<Directory /Volumes/Data/Data/USER/Sites/>
AllowOverride none
Require all granted
</Directory>

ที่มา: http://httpd.apache.org/docs/2.4/upgrading.html

Setting up PHP & MySQL on OS X Mavericks

With OS X 10.9 Mavericks, Apple chose to ship PHP 5.4.17. This is how to set it up from a clean install of Mavericks.

Note: If you don’t want to use the built-in PHP or want to use version 5.5, then these are some alternatives:

Let’s go!

Read more: http://akrabat.com/computing/setting-up-php-mysql-on-os-x-mavericks/

[Varnish] วิธีบันทึก Client IP บนเครื่อง backend

เราสามารถทำการบันทึก Client IP ทีเครื่อง backend  แทนที่จะให้ปรากฎเป็น IP ของ varnish เช่น 127.0.0.1  สามารถทำได้โดยการ แก้ไขไฟล์ /etc/varnish/default.vcl

sub vcl_recv {
  # Add a unique header containing the client address
  remove req.http.X-Forwarded-For;
  set    req.http.X-Forwarded-For = client.ip;
  # [...]
}

และเพิ่มบรรทัดต่อไปนี้ในไฟล์ /etc/httpd/conf/httpd.conf

LogFormat "%{X-Forwarded-For}i %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" varnishcombined

และใน VirtualHost directive ให้ใช้ CustomLog ดังตัวอย่างต่อไปนี้

<VirtualHost *:80>
  ServerName www.example.com
  # [...]
  CustomLog /var/log/apache2/www.example.com/access.log varnishcombined
  # [...]
</VirtualHost>

ที่มา: http://varnish-cache.org/wiki/FAQ#HowcanIlogtheclientIPaddressonthebackend

Redirect Everyone Except Your IP and Redirect an IP Address

mod_rewrite นี่ทำอะไรได้มากมายครับ วันนี้มีเหตุจำเป็นที่ผมจะต้องทำการ redirect IP Address สามารถทำได้ 2 อย่าง

1. ทำการ Redirect IP Address ของทุกๆ คน ยกเว้น IP ของคุณเอง
# Get mod_rewrite going
Options -MultiViews +FollowSymLinks
RewriteEngine On

# Redirect everyone who’s not from your IP
RewriteCond %{REMOTE_ADDR} !123.456.789.10 [NC]
RewriteRule !maintenance.html$ maintenance.html [R]

2. Redirect เฉพาะบาง IP Address ที่ต้องการเท่านั้น
# Get mod_rewrite going
Options -MultiViews +FollowSymLinks
RewriteEngine On

# Redirect someone’s IP
RewriteCond %{REMOTE_ADDR} 123.456.789.10
RewriteRule .* http://my.diary.in.th/ [R]

Anti Leech

พอดีนั่งดู log file แล้วเห็นว่ามีคนแอบเอาภาพเราไปใช้นี่นา ซึ่งจริงๆ แล้วผมไม่ได้ซีเรียสอะไรหรอกครับ แต่แค่อยากลองหาอะไรทำสนุกๆ ดูว่าเราจะหาวิธีป้องกันได้ยังไงบ้าง

ลองค้นๆ ดูแล้วก็พบว่าตัวช่วยที่ดีตัวหนึ่งก็คือ .htaccess และ Rewrite module ของ Apache นี่เอง

วิธีการง่ายๆ คือสร้างไฟล์ชื่อ .htaccess แล้วใส่คำสั่งของ Rewrite module ไว้ข้างใน
ดูตัวอย่างเลยก็แล้วกันครับ

1. วิธีนี้คือป้องกันไม่ให้ใครแอบเรียกไฟล์รูปภาพที่มีนามสกุล jpg|jpeg|gif|png|bmp ของเราไปใช้ โดยเมื่อภาพเหล่านี้ถูกเรียกใช้จากเว็บอื่น ภาพที่ปรากฎจะเป็น dot.gif แทน นอกจากนี้จะไม่สามารถเรียกไฟล์นั้นโดยตรงได้ด้วย เช่น จะเรียก http://my.diary.in.th/images/test.jpg ไม่ได้


RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://diary.in.th/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://diary.in.th$ [NC]
RewriteCond %{HTTP_REFERER} !^http://my.diary.in.th/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://my.diary.in.th$ [NC]
RewriteCond %{REQUEST_URI} !^/dot.gif [NC]
RewriteRule .*.(jpg|jpeg|gif|png|bmp)$ http://my.diary.in.th/dot.gif [R,NC]

Continue reading Anti Leech