标签归档:Lighttpd

将博客的https连接加强了

嗯,前几天已经强制了对博客使用https访问……感觉很好很强大,博客的等级突然就高起来了。

今天偶尔发现一个网站(https://www.ssllabs.com/ssltest/index.html),可以检查网站的安全性,于是兴冲冲的去测试了一下,结果发现了几个小问题(主要的,更零碎的就没管了)。

  • 启用了一种长度较短的加密算法;
  • 没有提供完整的证书链;
  • 可能受到BEAST攻击;

前面两个的话好说,稍微查了一下网络就ok,而且startssl也提供了完整的安装教程(lighttpd Apache nginx),略后悔没有仔细看。

问题是最后一个,BEAST攻击究竟是什么啊……

上网做了很多很多的Google,还打错字了,打成了beats,于是魔声总是出来捣乱。

最后,在一个网站(http://permalink.gmane.org/gmane.linux.debian.devel.security/16698)找到了一份方案,看起来像是一份邮件的备份。

里面提到了lighttpd的解决办法,就是在配置文件里面指定一下加密的算法,并且让服务器优先使用某些算法,就可以组织这种攻击了。

ssl.cipher-list =  "ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM"
ssl.honor-cipher-order = "enable"

应用了之后,再去做测试,果然BEAST攻击的提示没有了。

 

SSLLab测试结果

SSLLab测试结果

处理了lighttp上的wordpress用Jetpack的问题

嗯,以前用着用着都是没问题的,前几天看着评论栏直接无法访问了(蛋疼的防火墙),于是干脆关掉了,可是关掉之后发现好怀念那东西的网站统计啊……好想要回来啊,于是又重新启用,结果出问题了。

得到了这样的东西

Your Jetpack has a glitch. Something went wrong that’s never supposed to happen. Guess you’re just lucky: xml_rpc-32601

Try connecting again. Error Details: The Jetpack server could not communicate with your site’s XML-RPC URL. If you have the W3 Total Cache plugin installed, deactivate W3 Total Cache, try to Connect to WordPress.com again, reactivate W3 Total Cache, then clear W3 Total Cache’s cache.

卧槽,用的好好地怎么就突然出问题了呢?

经过啦大量的搜索,找到了解决的办法,原来是跟lighttpd的rewrite有关。

根据http://en.forums.wordpress.com/topic/jetpack-instl-issue-with-ssl-and-lighttpd(要求跨越防火墙),找到了解决的办法。
有一位有类似情况的人,将rewrite规则从

#Jetpack is broken with these rules
url.rewrite-once=(
 "^/(wp-.+).*/?" => "$0",
 "^/images/.*/?" => "$0",
 "^/temp/.*/?" => "$0",
 "^/(sitemap.xml)" => "$0",
 "^/(xmlrpc.php)" => "$0",
 "^/keyword/([A-Za-z_0-9\-]+)/?$" => "/index.php?keyword=$1",
 "^/.*?(\?.*)?$" => "/index.php$1"

改成了

#Jetpack works with these rules
url.rewrite-if-not-file = (
 "^/(wp-.+).*/?" => "$0",
 "^/images/.*/?" => "$0",
 "^/temp/.*/?" => "$0",
 "^/keyword/([A-Za-z_0-9\-]+)/?$" => "/index.php?keyword=$1",
 "^/.*?(\?.*)?$" => "/index.php$1"
 )

之后,Jetpack好了。我改成这样也没问题了。

lighttpd下的域名跳转

嗯,因为之前用的是花生壳的那个免费域名 ferrets.imblog.in,结果被K了,导致google不显示搜索结果,于是不得不老老实实在godaddy买了个域名,换了过来。

可是我又想让旧的网址能继续访问,于是上网搜了一下相关的资料。

参考:http://www.5558.biz/a/jianzhanjishu/tuwenjiaocheng/lighttpd-rules.html 

详细的配置方法如下:

$HTTP["host"] == "ferrets.imblog.in" {
server.name = "ferrets.imblog.in"
url.redirect = (
 "^/(.*)" => "http://ferrets.in/$1"
 )
ssl.engine = "disable"
}

这样之后,访问ferrets.imblog.in的时候就会自动跳到ferrets.in了。

lighttpd上vhosts的SSL

之前因为没怎么弄懂这个,于是总是没法再vhosts启用独立的证书,导致一直都只能有一个使用https链接,今天因为刚买了一个域名,于是将全部的vhosts都改了一下,终于弄懂是怎么回事。

官方文档一堆一堆的英文真是看得我头痛呢, 后来折腾的时候终于弄懂它说的是什么意思……

首先,你需要一个这样的设定

$SERVER["socket"] == ":443" {
server.document-root = "/www/site"
ssl.engine = "enable"
ssl.pemfile = "/etc/lighttpd.keys/cert.pem"
}

当你需要在vhosts上使用的时候,你需要这样写

$SERVER["socket"] == ":443" {
    ssl.engine = "enable"
    ssl.pemfile = "/path/to/cert.pem"

    $HTTP["host"] == "host1.com" {
    #some server setting
    )
    }
    $HTTP["host"] == "server2.com" {
    #some server setting
    }
}

然后,在另外的vhosts的设定里面加上

ssl.pemfile = "/etc/lighttpd/keys/certs.pem"

这样就可以覆盖掉证书的默认值从而使用不同的证书。

Lighttpd开启/关闭目录浏览

原文地址:http://hi.baidu.com/panzhiqi/blog/item/3e66abad0d489d0c4a36d624.html

相当于apache 中的 Options Indexes功能
编辑 lighttpd.conf

  1. 开启所有目录的目录浏览
dir-listing.activate = "enable"
  1. 开启特定目录的目录浏览
$HTTP["url"] =~ "^/upload($|/)" {
dir-listing.activate = "enable"
}
  1. 开启所有目录,关闭特定目录的目录浏览
dir-listing.activate = "enable"
$HTTP["url"] =~ "^/www($|/)" {
dir-listing.activate = "disable"
}

因权限造成lighttpd无法启动

最近不知道为什么lighttpd又跑不动了(当然不是VPS上的,而是路由上的) ,运行

lighttpd -f /etc/lighttpd/lighttpd.conf -D

得到了下面这堆奇怪的结果

2012-3-20 13:55:54: (log.c.172) server started
2012-3-20 13:55:54: (mod_fastcgi.c.1087) the fastcgi-backend /usr/bin/php-fcgi failed to start:
2012-3-20 13:55:54: (mod_fastcgi.c.1091) child exited with status 13 /usr/bin/php-fcgi
2012-3-20 13:55:54: (mod_fastcgi.c.1094) If you're trying to run your app as a FastCGI backend, make sure you're using the FastCGI-enabled version.
If this is PHP on Gentoo, add 'fastcgi' to the USE flags.
2012-3-20 13:55:54: (mod_fastcgi.c.1398) [ERROR]: spawning fcgi failed.
2012-3-20 13:55:54: (server.c.928) Configuration of plugins failed. Going down.

接着就无法启动了……

我擦勒,不带这样玩的啊喂,这种莫名其妙的东西是什么啊,到底是什么问题你说一下啊。不得已,只得在网上不断的搜索,都没有相关的资料……最后从某个英文的网站找到了一个指引(明灯啊!)strace

大概是一个调试的东东,在opkg的info里面的介绍是“A useful diagnostic, instructional, and debugging tool. Allows you to track whatsystem calls a program makes while it is running.”

接着我根据那位大神所说的,运行了一次

strace -ff lighttpd -D -f /etc/lighttpd/lighttpd.conf

结果出来了一大串一大串文字,刷屏了,而且看不到头。不过看到了一个很重要的信息

运行/usr/bin/php-fcgi的时候出现了“permission denied”。嗯?有问题?权限的话是755,应该没问题啊,尝试直接用root来运行lighttpd,报告说不能用root来运行。于是又新建了一个www-data的用户来运行,在用su切换账户的时候发现问题了。这个问题之前也提到过,于是就顺手改了过来。接着切换过去一运行/usr/bin/php-fcgi,没问题了。再运行lighttpd,也没问题了……

这可真蛋疼啊,明明之前的版本都可以直接用其他用户来运行的,现在的话还有自己动手。

使用vhost

因为最新换了Lighttpd呢,在装Wordpress的过程中,看见了一些比较有趣的代码($HTTP[“host”] )就稍微研究了一下,发现,这个vhosts真的是非常强力啊,V5的一比那啥。在使用同一个IP地址的时候,根据不同的域名,进入不同的网站根目录……

恩,然后现在直接访问网站IP和访问域名会得到不同的结果,这可真是厉害的说。

感叹完了,以下是相关使用说明:

参考:

Lighttpd virtualhost configuration ~ name-based virtual hosting 


Lighttpd的vhosts配置是

$HTTP[“host”] =~ “domain1\.com” {
server.name = “domain1\.com”
server.document-root = “/home/lighttpd/domain1.com/http”
}

 可以写在lighttpd.conf,也可以写在外部然后在lighttpd.conf里面写上include。当然也可以加上其他的设置,比如说server.dir-listing,之类的(更多的设定我也没有接触到)。

似乎还有Alias之类的虚拟文件夹,以后再研究。

 

 

WordPress使用Lighttpd的rewrite规则

嗯,即使lighttpd和php都打开了rewrite,可是在Wordpress上,使用的话,还要做点手脚才行。

参考: Lighttpd wordpress Permalink rewrite 办法

Lighttpd virtualhost configuration ~ name-based virtual hosting 

我使用的办法如下:
创建 /etc/lighttpd/wp-rewrite.conf 文件,内容为

url.rewrite-once = (
“^” + wpdir + “(wp-.+).*/?” => “$0”,
“^” + wpdir + “(sitemap.xml)” => “$0”,
“^” + wpdir + “(xmlrpc.php)” => “$0”,
“^” + wpdir + “keyword/([A-Za-z_0-9-])/?$” => wpdir + “index.php?keyword=$1”,
“^” + wpdir + “(.+)/?$” => wpdir + “index.php/$1”
)

然后修改 /etc/lighttpd/lighttpd.conf

$HTTP[“host”] =~ “” {
var.wpdir = “/”
include “wp-rewrite.conf”
}

PS:$HTTP[“host”] =~ “” 中两个“”里面什么也没有是因为我没有用vhost,直接在根目录

重装了VPS,将Apache换成了Lighttpd

好吧,总感觉我将这个VPS折腾的不成样子了,根据不完全统计,买来这一个月已经被我重装系统超过10次(- -b),虽然很大部分是客服的原因(有些系统装上之后跑不动啊),不过不得不承认我太喜欢折腾着东西了……(或许是因为重装挺方便?)

这次重装是因为这个Apache太吃内存了,Gnome也太吃内存了,平常溜进去看看的时候,内存占用都在480M左右,SWAP也要吃掉100~200M,感觉太费劲了,就琢磨了,哎,换成Lighttpd吧,反正也就挂一个Blog,没多少东西,顺便也把Gnome给换掉吧,反正只要有桌面环境就可以了(方便使用DropBox,synaptic等),于是又装回Ubuntu(我装过那串50+的系统列表里面的大概20个,只有3,4个能用,其他都不能启动),顺便找到一个非常简单的桌面环境,叫做Fluxbox(真的很简陋!),把lighttpd,php,mysqlserver等装上之后,顺利的跑起来,内存的话大概占用了350+M,SWAP吃掉10几M,感觉心里暗爽了很多。

不过再重新安装Blog的时候完全的把我吓一跳啊,直接用命令mysqldump来把之前备份的数据库导入的时候,居然没有读出来,还是一个新新的wordpress,把我吓出一身冷汗,结果后来再在phpMyAdmin里面导入之后,数据又回来了,真是险过剃头一百倍。

而且换成Lighttpd之后,rewrite不能正常工作,还要做点手脚,结果是相当的折腾人的说。

不过首次感受到了Dropbox的方便啊,后台静默备份,还原也相当方便,真好啊。