存档

2009年3月 的存档

nginx防盗链设置

2009年3月31日
评论关闭

防止盗链不仅能保护版权,又节约了不少流量。最近和bsdmap交流了下,听说他们通过防盗链节约了近1/3的图片流量。nginx的防盗链设置还是比较简单的,可以分为普通防盗链和ip/cookie based防盗链。其中ip based防盗链需要安装nginx的module,所以相对麻烦一些。

nginx最简单的防盗链设置如下

location ~* .(gif|jpg|png|swf|flv)$ {
valid_referers none blocked www.jefflei.com;
if ($invalid_referer) {
return 403;
}
}

通过nginx的重定向方式返回403错误。

NginxHttpAccessKeyModule实现防盗链

需要先安装nginx的NginxHttpAccessKeyModule模块。其运行方式是:如我的nginx目录下有一个file.gz 的文件。对应的URI 是http://www.jefflei.com/nginx/file.gz
若用ngx_http_accesskey_module 后则根据用户的IP生成一个key值,如下的链接来访问http://www.jefflei.com/download/file.zip?key=23497sdf897. 只有给定的key值正确了,才能够下载nginx目录下的file.gz,这样就可以避免被盗链了。

VN:F [1.9.22_1171]
Rating: 5.5/10 (2 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

系统管理 ,

SPF记录例子和详细解释

2009年3月25日

SPF是指Sender Policy Framework,是为了防范垃圾邮件而提出来的一种DNS记录类型,SPF是一种TXT类型的记录。SPF记录的本质,就是向收件人宣告:本域名的邮件从清单上所列IP发出的都是合法邮件,并非冒充的垃圾邮件。设置好SPF是正确设置邮件发送的域名记录和STMP的非常重要的一步。

如何查看SPF

Windows下进入DOS模式后用以下命令

nslookup -type=txt 域名

Unix操作系统下用:

# dig -t txt 域名

SPF的简单说明如下:
v=spf1 表示 spf1 的版本
IP4 代表IPv4进行验证(IP6代表用IPv6进行验证), 注意 “ip4:” 和“IP”之间是没有空格的
~all 代表结束

SPF记录例释

我们看这条SPF:

yourdomain.com "v=spf1 a mx mx:mail.jefflei.com ip4:202.96.88.88 ~all"

这条SPF记录具体的说明了允许发送 @yourdomain.com 的IP地址是:
a (这个a是指 yourdomain.com 解析出来的IP地址,若没有配置应取消)
mx (yourdomain.com 对应的mx,即 mail.yourdomain.com的A记录所对应的ip)
mx:mail.jefflei.com (如果没有配置过mail.jefflei.com这条MX记录也应取消)
ip4:202.96.88.88 (直接就是 202.152.186.85 这个IP地址)
其他还有些语法如下:
- Fail, 表示没有其他任何匹配发生
~ 代表软失败,通常用于测试中
? 代表忽略

如果外发的ip不止一个,那么必须要包含多个

v=spf1 ip4:202.96.88.88 ip4:202.96.88.87 ~all

测试SPF设置结果

设置好 DNS中的SPF记录后,发送邮件给自己的gmail,然后查看邮件的源文件,应该能看到类似的邮件头,其中有pass表示设置成功。

Received-SPF: pass (google.com: domain of test@jefflei.com designates
    202.96.88.87 as permitted sender) client-ip=202.96.88.87;

需要注意的是,服务器的IP若有更改,需要同时修改SPF!!!

利用SPF记录防止垃圾邮件

在Unix下可以安装配置SpamAssassin之类的插件来防止垃圾邮件和钓鱼邮件(Phishing)
最后提供两个有用的SPF工具
openspf的设置模版设置
测试SPF设置结果是否正确

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

系统管理

PC的电源选择

2009年3月22日

每年都要配一批机器,今年又是更新公司PC机的时候了。想起7,8年前正是我热衷于攒PC的时候,折腾着赚来的钱升级了4,5次PC,当然也有很多配件损坏,我常常发现最先坏的配件是电源或者主板。随着工作年龄的增加,我慢慢知道了其实电源是PC组装机非常重要的一环,功耗不足的电源犹如小马拉大车,很容易导致其他配件寿命缩短。

于是在后来的配机中又重视较大的功率的PC机,然而对于办公室使用来说,太大的功耗会消耗比较多的电,比如可以220w解决的结果配了450瓦的电源,那么一年累计耗电可能会多出1000多元(1度电即为1千瓦/时)。因此计算合理的PC功耗是很重要的。这也更有助于保持绿色和环保。
台式机推荐电源功耗估算:
pc-engergy-consumption
台式机推荐电源功耗计算器
http://www.extreme.outervision.com/psucalculatorlite.jsp

http://www.belson.com.cn/pwcount/pwcount.asp

推荐使用的设备有:

1.  AMD的X2 BE系列,BE2450 双核2.5GHz 1M二级缓存,功耗45W

2. 使用集成显卡主板

3. LCD替代CRT, 17寸CRT的功耗在65~100直接,而17寸的LCD功耗一般在20~35之间。

4. 具有高效率的电源。可参考2008年的一篇电源评测。可以考虑的是航嘉 宽频小子 冷静版 230w,对于集成显卡,无光驱办公用机足够了。如果是耗电不是很厉害的独立显卡,带光驱,可以考虑航嘉冷静王钻石版300w电源。

关于电源的选择,详细可以看这篇

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

电子商务

也谈WordPress关键词高亮

2009年3月15日

在搜索结果页面结果中显示关键词,或者对搜索引擎带来的用户显示欢迎语和操作提示,是一个能有效提高网站易用性的方法。wordpress下关键字高亮工具有很多,有searchhilight, wp landing sites, wp-hightlights等,其中wp landing sites可以提供欢迎语,使用方法如下:

第一步,修改你主题下的single.php和index.php,加入以下内容
<?php if (ls_getinfo('isref')) : ?>
<p class='landingsites'>欢迎来自 <?php ls_getinfo('referrer'); ?> 的朋友! 如果您是第一次来到这里, 推荐您通过
<a href='/feed' target='_blank'>RSS feed</a> 订阅我的博客!</p>
<div class="hello">您所搜索的关键词为: <strong><?php ls_getinfo('terms'); ?></strong></div>
<?php endif; ?>

第二步,在css中添加

.landingsites {
background-color:#FFFEC6;
border:thin dashed #CFCFCF;
color:#333333;
font-size:12px;
margin:3px 0 10px;
padding:6px;
}

第三步是修改插件中的landingsites.php中的searchengine数组中加入支持百度和中文谷歌的支持,

'google.cn' => 'q',
'baidu.com' => 'wd',

中文转码修改:
function ls_get_terms($d)函数最后返回return $terms;之前加上如下代码:

if (!seems_utf8($terms)){
$terms=iconv("GBK", "UTF-8", $terms);
}

这样你就可以在百度和google中看一下效果了。
要继续优化,可以考虑以下几点:

1. 在404页面中添加相关文章,这样即使是碰到google来的断链,用户也会找到些有用的东西:
<?php if (ls_getinfo('isref')) : ?>
<h2><?php ls_getinfo('terms'); ?></h2>
<p>欢迎来自 <?php ls_getinfo('referrer'); ?> 的朋友! 您所找的页面不存在,但是你搜索的关键词:<i><?php ls_getinfo('terms'); ?></i>. 有以下主题或许您也感兴趣:</p>
<ul>
<?php ls_related(5, 10, '<li>', '</li>', '', '', false, false); ?>
</ul>
<?php endif; ?>

2. 加粗或者高亮关键词:
加粗关键词请参见贝贝博客;如果只需要高亮关键词而不需要欢迎语可以用search_hilite插件。但是这两个方法在使用super  cache时都会出问题,比较好的highlight是纯php方案,如Js的搜索引擎关键字高亮工具Search Engine Keyword Highlight,这方面的wp插件可以用这个wp-hightlight插件。需要注意的是这个插件的最后有个后门钩子,需要去掉,清洁后的版本可以在这里下载关键字高亮工具

测试结果,在google搜索”nginx framework“,点击本站链接看效果:http://www.google.cn/search?hl=zh-CN&rlz=1I7GGLL_zh-CN&q=nginx+zend+framework

这个JS之前对中文和百度是不生效的,参照了这篇文章做了修改,现在百度和中文都可以使用了:

http://www.aiview.com/2005/08/highlight_keywords_with_javascript.html

VN:F [1.9.22_1171]
Rating: 10.0/10 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

系统管理 ,

免费DNS托管

2009年3月12日

现在国内有很多网址移到国外,如果你碰到了象我的域名注册公司一样不支持DNS托管的服务上,可以考虑使用Godaddy的免费DNS托管。Godaddy也为非Godaddy的域名提供免费DNS,需要先注册GoDaddy,登陆后点左面的“Domain Manager”,选择导航栏中”Tools”->”Off-site DNS”->”Add Off-site DNS”

添加domain name, 然后设置DNS记录,完成后将域名DNS设置为:mns01.domaincontrol.com和mns02.domaincontrol.com,等域名DNS生效就行了

需要注意的是dns server切换的时间比a记录及cname记录切换的时间要长,部分地区可能长达一周,所以切换之前做好准备工作。

如果要使用国内免费DNS服务,比较大的有中国E动网edong.com, dnspod.com和everdns.cn能提供电信和网通免费双线智能dns解析,哪位使用过的期待使用报告

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

软件和工具

域名解析DNS设置和检查

2009年3月11日
域名转移到godaddy作为注册商(registar)已经好几天了,有些用户反应无法访问网站,看了下是DNS问题。使用DNS report分析了下,发现了一个隐藏域名服务器(stealth nameserver), 应该是godaddy的问题,发了邮件让他们修改,希望能尽快改好。一般DNS服务商不大出错,平时也就不大关心,其实这些问题还是蛮重要的。查询方法介绍如下:
在windows命令行下打入nslookup,然后输入:
nslookup
如果需要查询mx记录可以使用set type=mx来完成
另,很多网站不重视域名反向解析SPF记录设置,这两项设置也对网站发出邮件的送达率非常重要,域名反向解析由供应商完成,SPF设置需要修改域名的TXT记录。
绝大多数的域名注册商都提供免费DNS托管,相对来说国内DNS服务比较稳定的是万网,其次是新网,后者的问题是设置CNAME比较麻烦
VN:F [1.9.22_1171]
Rating: 1.0/10 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

系统管理

几个DFS分布式文件系统

2009年3月10日

DFS出现之前较多使用的是NFS(Network File System), NFS 为一台服务器上的逻辑卷开放给远程客户端访问。客户端可以像操作本地硬盘一样操作另外一台服务器上的文件, 而不用知道它们是否文件存储在哪里。NFS可以简单地共享文件,但是它有一些缺点:
1.文件始终都只是存储在一台机器上。存储的容量不可能突破物理服务器的上限;
2.NFS并不考虑fail over,backup等高可靠性(HA)功能;
3.大并发时磁盘吞吐量较大,容易带来性能的瓶颈

之后出现了较多的DFS分布式文件系统,较著名的有

hadoop


Yahoo!在06年雇佣Doug Cotting,希望通过支持Hadoop来提高其计算能力,以对抗Google的GFS。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS放宽了POSIX的要求,允许以流的形式访问文件系统中的数据, HDFS提供了很强的failover,互为备份和高可靠性的分布式文件系统。
HadOOP的使用者有Yahoo, Facebook和Amazon EC2, Amazon S3。我们看到hadoop的logo是个小象,可见项目组对这个项目将来的预期。

Hadoop的另一目标是map-reduce计算。随着双核,多核甚至Stanford在做的1024核的出现,未来的编程重点会逐渐从OOP转向COP(concurrency-oriented programming)。而如何让程序员更简单地编写并行化程序,充分利用多核甚至分布式系统的计算能力,成为了很多研究的热点。Map Reduce就是在这种情况下出现的。

Mogile FS

mogileFS
danga

MogileFS由memcahed的开发公司danga一款perl开发的产品,目前国内使用mogielFS的有图片托管网站yupoo等。MogileFS提供了自动的文件同步和备份,分布式存取,做到了底层文件系统透明,简单访问的目的。同时mogileFS有php扩展模块,方便php对文件系统的操作。

Hadoop和MogileFS都只适合一次写入,多次读的文件.并是大文件. 其中MogileFS相对对于小文件比较合适,适合用于图片服务器

Doug Cutting的访谈
淘宝数据分析博客关于hadoop的实施指南
Hadoop一些中文介绍:
http://www.blogjava.net/killme2008/archive/2008/06/05/206043.html
http://www.mogilefs.cn/?p=19
Rapleaf应用hadoop的心得http://www.vimeo.com/2084824

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

系统管理

VPS服务器的选择

2009年3月8日

因为每年两会的原因,今年很多未做登记的国内网站被迫停站,也催生了很多网络”移民”,开始移到国外的主机上。除了虚拟主机,多数稍有访问量网站选择了VPS。国外VPS较国内成熟,但是在选择上除了价格有很多需要考虑的因素,我用了2年的Linux VPS,因此谈谈自己的体会:
1. Managed VPS V.S. Unmanaged VPS. Managed VPS说白了就是有网管帮助你管理服务器,对于绝大多数用户以及程序员,如果你想把精力集中在网站本身,建议你选择managed VPS,可以省却很多麻烦。Unmanaged VPS的好处是价格低,如果你是系统管理员,或者想省钱,那么unmanaged会比较合适一点。
2. 使用的VPS种类,用了这么长时间VPS,其实对他们用的什么软件没有仔细研究,这几天做了点research,说明如下,供大家参考:

  • VMWare ESX: 性能一般,但是可以在windows上运行linux和windows的主机
  • Parallels公司旗下收费版的VIRTUOZZO和免费版的OpenVZ
  • Xen 或者收费版的Xen Enterpress

以上三款是以Linux为主的虚拟容器技术,占有市场份额较大,其中VMWare和Xen为完整模拟,就是相当于你完全控制服务器,要模拟额外内存更困难一些。 Virtuozzo的磁盘和内存读写性能稍好些,主要的缺点是底层网络操作不能进行完全控制,另外一个缺点是主机托管商可以比较容易模拟很多内存出来,因此要小心黑心运营商的注水猪肉。具体性能评测请见这篇http://www.51testing.com/html/36/n-14236.html

微软Windows Server 2008 x64版上的Hyper V,这个是windows VPS的主要软件,功能和VMWare和Xen类似。

很多VPS供应商提供测试账号,你可以要一个测试账号,用第三方服务测试网速。查看硬件
cat /proc/cpuinfo
需要注意的是Xen无法区分多核多CPU或者超线程处理器,因此看到的永远是单个单核服务器

3. 稳定行和服务响应时间,买托管我觉得至少有1/3的价格应该花在买服务上。如果网站坏了也没人管,我想你是一定不愿意看到的。
4. 对于比较大的博客,国外的VPS服务商一般带宽足够使用了。如果你使用国内的网站,可能需要考虑一下流量和带宽的限制。

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

系统管理

关键词投放管理工具

2009年3月6日

一直用google的关键词管理工具google adwords editor,最近又发现百度也有关键词管理工具软件了,叫adsage,可以和excel集成,没试过只有30天试用期,不是免费的我就不试了。有兴趣的可以试试。不过我觉得百度关键词除了导入导出,似乎也没什么太大使用软件的必要。

VN:F [1.9.22_1171]
Rating: 10.0/10 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

搜索引擎 ,

web服务器伪装

2009年3月5日

在服务器上发现很多攻击历史,可以看到黑客在不断尝试攻击,难怪现在肉鸡泛滥。由于个人网站没有时间及时更新web server到最新版本,你又不知道哪天有什么安全漏洞,比较好的办法是把web服务器类型隐藏,增加黑客攻击的难度。我们先看一下goolge和百度是怎么做的:

# curl -I www.google.com
HTTP/1.1 200 OK
Cache-Control: private, max-age=0
Date: Thu, 05 Mar 2009 04:01:06 GMT
Expires: -1
Content-Type: text/html; charset=ISO-8859-1
Set-Cookie: PREF=ID=7087ebea8c3fcab5:NW=1:TM=1236225666:LM=1236225666:S=HYYAZJyJT7O4PLIO; expires=Sat, 05-Mar-2011 04:01:06 GMT; path=/; domain=.google.com
Server: gws
Transfer-Encoding: chunked

百度的Web服务器伪装:

#curl -I www.baidu.com
HTTP/1.1 200 OK
Date: Thu, 05 Mar 2009 04:03:09 GMT
BWS/1.0
Content-Length: 3932
Content-Type: text/html
Cache-Control: private
Expires: Thu, 05 Mar 2009 04:03:09 GMT
Set-Cookie: BAIDUID=57AC33DC9E472FADDB6DAE6815FCBFC6:FG=1; expires=Thu, 05-Mar-39 04:03:09 GMT; path=/; domain=.baidu.com
P3P: CP=" OTI DSP COR IVA OUR IND COM "

要进行web服务器伪装通常来说需要重新便宜web服务器,下面介绍一下nginx和apache如何进行操作
重新编译nginx的服务器响应:
# cd nginx-0.6.34
# vi src/core/nginx.h

#ifndef _NGINX_H_INCLUDED_
#define _NGINX_H_INCLUDED_
#define NGINX_VERSION      "1.3"
#define NGINX_VER          "SaSaWS/" NGINX_VERSION
#define NGINX_VAR          "SaSaWS"
#define NGX_OLDPID_EXT     ".oldbin"
#endif /* _NGINX_H_INCLUDED_ */

Apache可以修改以下文件
include/ap_release.h

#define AP_SERVER_BASEVENDOR    IBM
#define AP_SERVER_BASEPRODUCT   Websphere
#define AP_SERVER_MAJORVERSION  5 //主版本
#define AP_SERVER_MINORVERSION  0 //次版本
#define AP_SERVER_PATCHLEVEL     13 //修正版本

file: os/os2/os.h

#define PLATFORM  //OS的名称,例如:Solaris"

如果不是伪装,而只是不显示是apache,可以在apache配置文件中添加以下两行
ServerTokens ProductOnly
ServerSignature Off

既然谈到了服务器,也就再谈一点php的安全措施,可以关闭显示服务器端为php,具体做法是在/etc/php.ini添加:
expose_php = Off
在php的生产环境下建议做一些额外的安全措施:
enable_dl = Off
disable_functions = exec,system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open,dl,popen,show_source
如果你建立的是虚拟主机那么你需要一份更长的函数列表:
disable_functions = escapeshellarg, escapeshellcmd, exec, passthru, proc_close, proc_get_status, proc_open, proc_nice, proc_terminate, shell_exec, system, ini_restore, popen, dl, disk_free_space, diskfreespace, set_time_limit, tmpfile, fopen, readfile, fpassthru, fsockopen, mail, ini_alter, highlight_file, openlog, show_source, symlink, apache_child_terminate, apache_get_modules, apache_get_version, apache_getenv, apache_note, apache_setenv, parse_ini_file

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

系统管理 ,