lighttpd服务器url重写与伪静态配置
最近搞了一个轻量级的Lighttpd+PHP+MySQL测试环境,就在那台修复后的路由器上......
(链接1:中兴H618B就砖刷Tomato DualWAN 链接2:网易博客)
除了跑Lighttpd、Nginx了,apache2.2也能跑,这里我选择了Lighttpd,因为在这个硬件条件下它最稳定,也最快。
测试环境嘛,URL重写是少不了的。
URL 重写是截取传入 Web 请求并自动将请求重定向到其他 URL 的过程。其优点在于:
1、缩短url,隐藏实际路径提高安全性;
2、易于用户记忆和键入;
3、易于被搜索引擎收录。
Lighttpd是一款轻量级的web server,和Apache一样是开源的,与Apache相比,虽然功能不及Apache完善,稳定性也不如Apache,但是不管是静态页面还是动态内容都比Apache快,用于搞个小型WEB服务器是最恰当不过了,就比如我用路由器改造的这个。
虽然采用Lighttpd的网站不少,但其配置多是前Nginx后Lighttpd(Nginx处理静态和并发,Lighttpd处理动态和图片)。网上的相关资料也非常非常少,这里就慢慢整理资料吧,这个轻量级服务器如同当年的Nginx,将来也会应用更加广泛的。
这里也说说自己对Lighttpd和Nginx的看法,因为Nginx之前也在这个硬件环境下使用了1个月,Lighttpd也在这个硬件环境下使用了3个月,使用中Nginx各种502,Lighttpd居然稳健的跑了3个月,没出问题。其组件设置都是Lighttpd或Nginx+php5.2.17(spawn-fcgi)+mysql4.1,并发都是200。虽然php5.3以后Nginx可以更好的运用php-fpm控制php-cgi,但是之前的版本还是用spawn-fcgi最稳定。(那就用php5.3呗~抱歉,这个路由有限制,不能随意编译)。所以个人觉得,低配环境还是Lighttpd比较稳定。
对于Nginx的大火,其实个人觉得,其官方有Windows版本和官方有简体中文站很有关!Lighttpd除了其爱好者网站,官方版本是不直接支持Win的,Win上安装Lighttpd需要安装unix模拟环境Cygwin。Lighttpd官方也没有简体中文站!平时也在服务器群里聊天,小站几乎清一色各种Windows,用Linux了了,可能是Linux展现形式和枯燥的命令让人一时摸不清路子。其实也与现代的教育模式有关,大部分低中高等学校都以Windows为教学工具,除了以后相关专业几乎接触不到Linux,甚至相关专业一开始也很少用Linux。有多少人不是用够了Win,看到Win想吐才开始学习使用Linux,甚至到了中后期还是以图形的Linux为主要使用对象,Win的模式已经深深的印入人们的脑海里。
Lighttpd处理并发的能力并不差,其实它还有个很大的优点,cpu和内存释放很快,硬盘压力也不大,我挂载的移动硬盘度写速度只有22MB/S,是很老的地转速IDE笔记本硬盘。在这个硬件环境中感觉Lighttpd更严谨,不像Nginx跑起来那么粗犷。
好,侃了那么多,也是纯个人想法,欢迎拍砖!
言归正传,说一下Lighttpd的伪静态规则吧!欢迎您继续收看友声网卡卡北的网络“软文”
Lighttpd比Apache要轻一些,但rewrite是不支持Apache的.htaccess,你可以写一个脚本把htaccess转成Lighttpd的规则。只能把规则写到lighttpd配置里了。所以Lighttpd是不适合现在国内大部分虚拟主机供应商的。IDC还是Apache比较妥当。像我这样的测试环境,还是比较适合的。
大部分东西在Lighttpd的mod_rewrite文档里有写。要做的就是技巧。
比如Apache的rewrite里可以用 -f 和 -d 来表示一个真实的文件或目录(当然在Linux下万物皆文件)。
Lighttpd则是用url.rewrite-if-not-file来保证,但这条配置是在1.4.24版本之后才被支持。
于是要用神奇的一招:
url.rewrite = (
"/(.*).(.*)” => "$0", //关键
"^/(.*)/?$” => "/index.php/$1"
)
以上大体介绍后,我们说说在lighttpd重写url的具体步骤:
1、打开lighttpd.conf文件,(该文件一般在/usr/local/etc/目录下或者/opt/etc/目录下,如果不是自己安装的,可以用find命令找到)。
2、打开lighttpd.conf文件后,搜索:server.modules (建议用EditPlus或Notepad++打开,这里强烈推荐EditPlus)
找到 "mod_rewrite",
去掉前面的#
3、我们以常见的论坛程序PHPWind8.7及其以前版本为例:
PW在Apache下的伪静态规则为:
RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
在lighttpd上应该写为:
^(.*)-htm-(.*)$" => "$1.php?$2
还是在lighttpd.conf文件里,往下找到#url.rewrite
去掉前面#
原来是:
#url.rewrite = ( "^/$" => "/server-status" )
现在是:
url.rewrite = ( "^(.*)-htm-(.*)$" => "$1.php?$2" )
(注释:有的lighttpd版本里是:url.rewrite-once = )
如果想添加更多的规则,则可以写成这样:
url.rewrite = (
"^(.*)-htm-(.*)$" => "$1.php?$2",
"^(.*)/simple/([a-z0-9\_]+\.html)$" => "$1/simple/index.php?$2"
)
怎么样,很简单吧!
我们再用一条WordPress规则做下演示:
Apache:
RewriteRule /(.*)?$ /index.php/$1
Lighttpd:
"^/(.*)/?$" => "/index.php/$1"
因为目前不再用WordPress,如果其规则有错,欢迎拍砖!