07-14
前一段在做一个项目时,遇到了这个问题,在feed.ccvita.com下存在一个名为ABC的cookie,
同时在.ccvita.com父域下也存在同名的ABC的cookie。在读取ABC时,在IE和Firefox中出现了不同的结果。
情况分析:
.ccvita.com父域下的页面读取cookie的情况是:
1.在IE中,会将子域的cookie和父域的cookie合并在一起读出。
2.在Firefox中,如果有本域(ccvita.com)的ABC存在,会优先读本域(ccvita.com)的ABC的内容 ,而不读子域(feed.ccvita.com)的ABC的内容。
3.在Firefox中,如果没有本域(ccvita.com)的ABC存在,才会读子域(feed.ccvita.com)的ABC的内容。
4.在Firefox中,feed.ccvita.com子域下的页面读取cookie的情况规则相同,feed.ccvita.com子域的ABC优先读取,IE合并读取;Firefox优先读取本域,只读一个。
06-18
Nginx的Rewrite
经过网上查阅和测试,发现Nginx的Rewrite规则和Apache的Rewite规则差别不是很大,几乎可以直接使用。比如在Apache中这样写规则
rewrite ^/([0-9]{5}).html$ /viewthread.php?tid=$1 last;
而在Nginx中写成这样写是无法启动的,解决的办法是加上两个双引号:
rewrite “^/([0-9]{5}).html$” /viewthread.php?tid=$1 last;
同时将RewriteRule为Rewrite,基本就实现了Nginx的Rewrite规则到Apache的Rewite规则的转换。
Rewrite的Flags
last - 基本上都用这个Flag。
break - 中止Rewirte,不在继续匹配
redirect - 返回临时重定向的HTTP状态302
permanent - 返回永久重定向的HTTP状态301
05-30
起因:
今天在调试Ucenter的同步登陆和同步登出的过程中,浏览器突然出现以下错误提示:
Your browser sent a request that this server could not understand.
Size of a request header field exceeds server limit.
开始是以为P3P协议设置cookie的问题,查阅了P3P的文档,没有相关的条目。经过不懈的搜索,终于发现原来是Apache中资源使用限制的设置问题。
技术背景:
Apache中“资源使用限制”就是要限制用户对网站特定资源(如目录、服务器硬件等)的访问。相关指令包括:LimitRequestBody、LimitRequestFields、LimitRequestFieldSize、LimitRequestLine、RLimitCPU、RLimitMEM、RLimitNPROC和ThreadStackSize。LimitRequest*系列指令用来限制Apache在读取客户端请求的过程中使用的资源数量。通过限制这些值,可以减轻某些拒绝服务(DOS)攻击;RLimit*系列指令限制被Apache子进程所派生的进程使用的资源数量,通常这些指令用来控制CGI脚本和SSI exec命令所使用的资源;ThreadStackSize指令在某些平台上用来控制堆栈大小。
05-14
有个客户的站点负载过高,于是我们可爱的愤青系统工程师将其的Apache换成Nginx,效果很明显。现在记录一些Apache转换过程中的小细节,留下备忘。
Nginx的防盗链
一般的防盗链如下:
location ~* \.(gif|jpg|png|swf|flv)$ {
valid_referers none blocked www.ccvita.com www.phpq.net;
if ($invalid_referer) {
rewrite ^/ http://www.ccvita.com/403.html;
#return 404;
}
}
第一行:gif|jpg|png|swf|flv
表示对gif、jpg、png、swf、flv后缀的文件实行防盗链
第二行:www.ccvita.com www.phpq.net
表示对www.ccvita.com www.phpq.net这2个来路进行判断
if{}里面内容的意思是,如果来路不是指定来路就跳转到错误页面,当然直接返回404也是可以的。
NginxHttpAccessKeyModule实现防盗链
如果不怕麻烦,有条件实现的话,推荐使用NginxHttpAccessKeyModule这个东西。
他的运行方式是:如我的download 目录下有一个 file.zip 的文件。对应的URI 是http://www.ccvita.com/download/file.zip
使用ngx_http_accesskey_module 模块后http://www.ccvita.com/download/file.zip?key=09093abeac094. 只有给定的key值正确了,才能够下载download目录下的file.zip。而且 key 值是根据用户的IP有关的,这样就可以避免被盗链了。
据说NginxHttpAccessKeyModule现在连迅雷都可以防了,可以尝试一下。
05-09
今日偶然之间发现了这个Apache的mod_aspdotnet项目,发现Apache居然也可以支持ASP.NET。
据说由于IIS和Apache下的ASP.NET都是运行在Common Language Runtime(CRL)的基础上,因此Apache环境下的ASP.NET程序的运行速度不会比在IIS下慢。
而且使用mod_aspdotnet的时候首先,必须要有Windows环境和.NET Framework的支持。此外还建议安装.NET开发工具如.NET Framework SDK或者VisualStudio.NET。需要注意的是Windows的版本应为2000、2003和XP。Win9X系列不能安装.NET Framework。然后需要安装Apache。应该使用Win32平台的Apache,版本2.0以上。
不过查看了apache官方的介绍之后,伤心的发现这个项目居然已经从Apache官方去除了。按照Apache官方的说法:The mod_aspdotnet module has been retired by the httpd project. Every ASF project requires multiple developers, and this project did not have enough developers participating to remain under the ASF umbrella. Development has been resumed by the original authors at it’s new home, the mod-aspdotnet SourceForge project. Note there is NO further support or effort on this module from the httpd project, refer all questions on to the SourceForge project’s user and development lists.这段文字的大概意思就是由于mod_aspdotnet这个项目参与维护的人数和更新的周期导致此项目目前已经被去除,只能有sourceforge上的相关人员自行开发和维护了。
