Archive for 十二月, 2010

【转】8 Commonly Used Scalable System Design Patterns


27 12月
Ricky Ho in Scalable System Design Patterns has created a great list of scalability patterns along with very well done explanatory graphics. A summary of the patterns are:
  1. Load Balancer - a dispatcher determines which worker instance will handle a request based on different policies.
  2. Scatter and Gather - a dispatcher multicasts requests to all workers in a pool. Each worker will compute a local result and send it back to the dispatcher, who will consolidate them into a single response and then send back to the client.
  3. Result Cache - a dispatcher will first lookup if the request has been made before and try to find the previous result to return, in order to save the actual execution.
  4. Shared Space - all workers monitors information from the shared space and contributes partial knowledge back to the blackboard. The information is continuously enriched until a solution is reached.
  5. Pipe and Filter - all workers connected by pipes across which data flows.
  6. MapReduce -  targets batch jobs where disk I/O is the major bottleneck. It use a distributed file system so that disk I/O can be done in parallel.
  7. Bulk Synchronous Parallel - a  lock-step execution across all workers, coordinated by a master.
  8. Execution Orchestrator - an intelligent scheduler / orchestrator schedules ready-to-run tasks (based on a dependency graph) across a clusters of dumb workers.

【转】Htaccess文件用法集锦


27 12月

1.时区设置

有些时候,当你在PHP里使用date或mktime函数时,由于时区的不同,它会显示出一些很奇怪的信息。下面是解决这个问题的方法之一。就是设置你的服务器的时区。你可以在这里找到所有支持的时区的清单。
  1. SetEnv TZ Australia/Melbourne

2. 搜索引擎友好的301永久转向方法

为什么这是搜索引擎友好的呢?因为现在很多现代的搜索引擎都有能根据检查301永久转向来更新它现有的记录的功能。
  1. Redirect 301 http://www.aqee.net/home http://www.aqee.net/

3. 屏蔽下载对话框

通常,当你下载东西的时候,你会看到一个对话框询问你是保持这个文件还是直接打开它。如果你不想看到这个东西,你可以把下面的一段代码放到你的.htaccess文件里。
  1. AddType application/octet-stream .pdf
  2. AddType application/octet-stream .zip
  3. AddType application/octet-stream .mov

4. 省去www前缀

SEO的一个原则是,确保你的网站只有一个URL。因此,你需要把所有的通过www的访问转向的非www,或者反这来。
  1. RewriteEngine On
  2. RewriteBase /
  3. RewriteCond %{HTTP_HOST} ^www.aqee.net [NC]
  4. RewriteRule ^(.*)$ http://aqee.net/$1 [L,R=301]

5. 个性化Error页面

对每个错误代码定制自己个性化的错误页面。
  1. ErrorDocument 401 /error/401.php
  2. ErrorDocument 403 /error/403.php
  3. ErrorDocument 404 /error/404.php
  4. ErrorDocument 500 /error/500.php

6. 压缩文件

通过压缩你的文件体积来优化网站的访问速度。
  1. # 压缩 text, html, javascript, css, xml:
  2. AddOutputFilterByType DEFLATE text/plain
  3. AddOutputFilterByType DEFLATE text/html
  4. AddOutputFilterByType DEFLATE text/xml
  5. AddOutputFilterByType DEFLATE text/css
  6. AddOutputFilterByType DEFLATE application/xml
  7. AddOutputFilterByType DEFLATE application/xhtml+xml
  8. AddOutputFilterByType DEFLATE application/rss+xml
  9. AddOutputFilterByType DEFLATE application/javascript
  10. AddOutputFilterByType DEFLATE application/x-javascript

7. 缓存文件

缓存文件是另外一个提高你的网站访问速度的好方法。
  1. <FilesMatch “.(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$”>
  2. Header set Cache-Control “max-age=2592000″
  3. </FilesMatch>

8. 对某些文件类型禁止使用缓存

而另一方面,你也可以定制对某些文件类型禁止使用缓存。
  1. # 显式的规定对脚本和其它动态文件禁止使用缓存
  2. <FilesMatch “.(pl|php|cgi|spl|scgi|fcgi)$”>
  3. Header unset Cache-Control
  4. </FilesMatch>

安全问题

下面的htaccess代码能够提高你的web服务器的安全水平。图片链接盗用保护非常有用,它能防止其他人偷盗使用你的服务器上的图片资源。

1. 通过.htaccess放盗链

痛恨那些偷盗链接你的web服务器上的图片资源而耗尽了你的带宽的行为吗?试试这个,你可以防止这种事情的发生。
  1. RewriteBase /
  2. RewriteCond %{HTTP_REFERER} !^$
  3. RewriteCond %{HTTP_REFERER} !^http://(www.)?aqee.net/.*$ [NC]
  4. RewriteRule .(gif|jpg|swf|flv|png)$ /feed/ [R=302,L]

2. 防黑客

如果你想提高网站的安全等级,你可以去掉下面的几行代码,这样可以防止一些常见恶意URL匹配的黑客攻击技术。
  1. RewriteEngine On
  2. # proc/self/environ? 没门!
  3. RewriteCond %{QUERY_STRING} proc/self/environ [OR]
  4. # 阻止脚本企图通过URL修改mosConfig值
  5. RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
  6. # 阻止脚本通过URL传递的base64_encode垃圾信息
  7. RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]
  8. # 阻止在URL含有<script>标记的脚本
  9. RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
  10. # 阻止企图通过URL设置PHP的GLOBALS变量的脚本
  11. RewriteCond %{QUERY_STRING} GLOBALS(=|[|\%[0-9A-Z]{0,2}) [OR]
  12. # 阻止企图通过URL设置PHP的_REQUEST变量的脚本
  13. RewriteCond %{QUERY_STRING} _REQUEST(=|[|\%[0-9A-Z]{0,2})
  14. # 把所有被阻止的请求转向到403禁止提示页面!
  15. RewriteRule ^(.*)$ index.php [F,L]

3. 阻止访问你的 .htaccess 文件

下面的代码可以阻止别人访问你的.htaccess文件。同样,你也可以设定阻止多种文件类型。
  1. # 保护你的 htaccess 文件
  2. <Files .htaccess>
  3. order allow,deny
  4. deny from all
  5. </Files>
  6. # 阻止查看指定的文件
  7. <Files secretfile.jpg>
  8. order allow,deny
  9. deny from all
  10. </Files>
  11. # 多种文件类型
  12. <FilesMatch “.(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$”>
  13. Order Allow,Deny
  14. Deny from all
  15. </FilesMatch>

4. 重命名 htaccess 文件

你可以通过重命名htaccess文件来对其进行保护。
  1. AccessFileName htacc.ess

5. 禁止目录浏览

禁止服务器对外显示目录结构,反之亦然。
  1. # 禁止目录浏览
  2. Options All -Indexes
  3. # 开放目录浏览
  4. Options All +Indexes

6. 改变缺省的Index页面

你可以把缺省的 index.html, index.php 或 index.htm 改成其它页面。
  1. DirectoryIndex business.html

7. 通过引用信息来阻止某些不欢迎的浏览者

  1. # 阻止来自某网站的用户
  2. <IfModule mod_rewrite.c>
  3. RewriteEngine on
  4. RewriteCond %{HTTP_REFERER} scumbag.com [NC,OR]
  5. RewriteCond %{HTTP_REFERER} wormhole.com [NC,OR]
  6. RewriteRule .* - [F]
  7. </ifModule>

8. 通过判断浏览器头信息来阻止某些请求

这个方法可以通过阻止某些机器人或蜘蛛爬虫抓取你的网站来节省你的带宽流量。
  1. # 阻止来自某些特定网站的用户
  2. <IfModule mod_rewrite.c>
  3. SetEnvIfNoCase ^User-Agent$ .*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider |leacher|collector|grabber|webpictures) HTTP_SAFE_BADBOT
  4. SetEnvIfNoCase ^User-Agent$ .*(libwww-perl|aesop_com_spiderman) HTTP_SAFE_BADBOT
  5. Deny from env=HTTP_SAFE_BADBOT
  6. </ifModule>

9. 禁止脚本执行,加强你的目录安全

  1. # 禁止某些目录里的脚本执行权限
  2. AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi
  3. Options -ExecCGI

貓熊寶寶幼齒園

姜經緯的博客