Archive for » January, 2007 «

Lighttpd 图片和视频等文件的防盗链处理

  用过Apache的朋友都知道mod_rewrite可以用来进行处理防盗链,Lighttpd也有同样的功能,而且总的来说,lighttpd.conf配置文件比httpd.conf更简单明了。 原来一直使用Apache来处理防盗链,今天修改了服务器上Lighttpd的配置,直接实现了防盗链,下面是防盗链部分的代码。

$HTTP["referer"] !~ "^($|http://.*\.(toplee\.com|8zone\.cn))" {       
  $HTTP["url"] =~ "\.(jpg|jpeg|png|gif|rar|zip|mp3)$" {
    url.redirect = (".*"    => "http://www.toplee.com/blog/")
  }
}

  懂点编程的朋友一定惊叹lighttpd的配置如此简洁明了,我非常喜欢这种风格的东西!
Lighttpd

Memcached和Lucene笔记

  前段时间完成的项目使用了大量的Memcached,整个架构在性能上的确提高了很多,的确不是一点点的提高,面向大负载访问的时候,MySQL数据库仍然可以做到轻量级的负载,效果不错,建议有条件的朋友一定要把项目改造到Memcached上,著名的Vbb论坛当前的版本就已经开始支持使用Memcached进行论坛数据缓存。我原来在MOP的时候,我们也大量的采用这个东西。

  在使用Memcached方面,谈不上什么经验,反正极端的性能最大化就是使用永久的缓存,通过你的程序逻辑去控制和维护MC里面的缓存数据,我做的项目就是这样处理的,程序的逻辑的确增加了复杂度,但是对于商业项目来说,这种付出是非常值得的。

  Memcached唯一可能需要注意的是,他对key的操作不是原子级别的,所以在高并发处理的时候,对同一个key的写操作可能会导致覆盖,这个需要自己从程序逻辑上进行处理,这个理论我并没有深入研究,不过JH看了源代码给了我这样的结论,按照JH的实力和人品,我认为有80%以上的可信度:)

  对于Lucene,大部分人都不陌生,相关的技术也不用太多讲解,网上到处都是相关的文档。我最近想通过PHP来找到一个最佳的整合Lucene的方法,并且应用到正规的商业应用中,目前知道的可选方案是Pecl的Clucene模块和Zend Framework的 Zend_Search_Lucene 模块,这两个东西目前我使用的感觉都不算太好,另外还有一种是使用 PHP的 Java扩展支持(有两种,一种是php_java扩展,一种是php_java的 bradge方式),这个感觉也比较怪异,最后还有一种知道的办法就是使用系统调用 java 命令执行Lucene功能。 这个没有试过,不知性能可以达到什么程度。

  在这里做个记号,等有了进一步的收获补进来。

it was a so sweat and exciting night!

  I could hardly find any words to express my feelings! This could scarcely be true and I could not believe it, but it was the truth! every moment seven years ago just came back to my mind, so amazingly clear as if it just happened yesterday.

  Many things happened around us, but the most important thing is still unchanged yet!

  ……

寒冷的夜、寂静的公路、孤独的自我。。。

  昨晚工作到凌晨1点多离开办公室,伴随着车子里面悠扬而伤感的Korean Music CD,行驶在只有这一刻才能感受到宽敞和寂静的公路上,心情很难形容,到底是一种美还是伤,不管是什么,很容易让自己沉醉进去,点燃一支烟,此刻无需担心JC的打扰,稍稍放低车窗,让车外寒冷的空气带走车里的烟,同时也带进来让人产生自虐般快感的寒冷。 于是不由得放慢了车速,慢慢的让自己沉浸到一种伤感的意境中,而且希望这种伤感越强烈越爽,在这种强烈的伤感中,任何人都会不由自主的想起某些往事和某个人。

  人的一生面临太多选择,由此而产生太多的后悔和遗憾,很多人会因为曾经的一次错误选择,一生都无法从那一刻、那一幕中走出来,这种笼罩自己一生的回忆有时充满痛苦,有时又是如此变态的让人感受到快感。。。。

squid后面的lighttpd日志记录用户ip的方法

默认在lighttpd的accesslog里面无法记录透过squid或者apache的mod_proxy过来的用户ip地址,全都会记录到squid或者apache机器的ip地址,但是httpd头里面的用户ip其实是发送到lighttpd的,可以通过修改accesslog.format来达到目的,下面是我的格式,跟combined兼容:

accesslog.format  = "%{X-Forwarded-For}i %v %u %t \"%r\" %s %b  \"%{User-Agent}i\" \"%{Referer}i\""

其中”%{X-Forwarded-For}i 就是记录了用户来源的ip地址