手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 免费部署 N8N 的 Zeabur 注册 | 登陆
浏览模式: 标准 | 列表分类:Software

[精][转]Apache多虚拟主机的简单配置

打开google reader,好开心,发现一篇精品文章,不敢独享,放上来。毕竟,独乐乐不如众乐乐嘛。没看这篇文章之前,我一直没有想通,那些空间商是怎么让一个用户注册一下就生成一个空间,而不用重启apache的。这一直是我的心头疑问,直到看到这篇文章的黑体字,所以。。。。转摘一下,哈哈

作者:FinalBSD
日期:2008-09-11
原文地址:http://www.sanotes.net/html/y2008/181.html
需求:
一台apache上要服务很多的虚拟主机,这些虚拟主机的域名具有规律性,比如说是:xxx.example.com

实现:
使用mod_rewrite进行跳转
优点:
* 不需要为每一个虚拟主机配置一段;
* 新增了vhost不需要重启apache,只需要编辑vhosts.map即可;

缺点:
* 无法为特定的vhosts设定具体配置

配置:

XML/HTML代码
  1. RewriteEngine On  
  2. RewriteMap lowercase int:tolower  
  3.   
  4. RewriteMap vhost txt:/usr/local/etc/apache22/vhost.map  
  5. RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$  
  6. RewriteCond ${vhost:%1} ^(/.*)$  
  7. RewriteRule ^/(.*)$ %1/$1  

 

/usr/local/etc/apache22/vhost.map的内容是:

XML/HTML代码
  1. site1.example.com /usr/local/www/data/1  
  2. site2.example.com /usr/local/www/data/2  
  3. site3.example.com /usr/local/www/data/3  
  4. site4.example.com /usr/local/www/data/4  
  5. site5.example.com /usr/local/www/data/5  
  6. site6.example.com /usr/local/www/data/6  

 

原理:
1.构建2个映射表,分别是lowercase和vhost;
2.对每个URL进行RewriteCond检查,比如http://Site5.Example.com/index.html
2.1 第一条RewriteCond:

XML/HTML代码
  1. RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$  

 

1)这里首先查询lowercase表,lowercase表属于int类型,使用apache内部函数tolower将

XML/HTML代码
  1. key:Site5.Example.com替换为value:site5.example.com.  

 

2)查完之后用查询到的Value进行RewriteCond判断

XML/HTML代码
  1. input='site5.example.com' pattern='^(.+)$' => matched  

 

2.2 第二条RewriteCond:

XML/HTML代码
  1. RewriteCond ${vhost:%1} ^(/.*)$  

 

1)这里首先查询vhost表,vhost表属于txt类型,key:site5.example.com对应value为/usr/local/www/data/5.
2)查完之后用查询到的value进行RewriteCond判断

XML/HTML代码
  1. input='/usr/local/www/data/5' pattern='^(/.*)$' => matched  

 

3.在2条RewriteCond都符合的情况下,执行RewriteRule规则:

XML/HTML代码
  1. RewriteRule ^/(.*)$ %1/$1  

 

将/下面的所有文件重写到%1/$1,这里的
%1:是上一个RewriteCond的value:/usr/local/www/data/5
$1:即(.*)的括号里面的内容,即请求的文件名
最终的执行为:

XML/HTML代码
  1. rewrite '/index.html' -> '/usr/local/www/data/5/index.html'  

 

可以看详细的日志了解整个过程。
requested uri /index.html

XML/HTML代码
  1. 192.168.1.2 - - [11/Sep/2008:22:09:25 +0800] [site5.example.com/sid#2840feb8][rid#28cbe050/initial] (3) applying pattern '^/(.*)$' to uri '/index.html'  
  2. 192.168.1.2 - - [11/Sep/2008:22:09:25 +0800] [site5.example.com/sid#2840feb8][rid#28cbe050/initial] (5) map lookup OK: map=lowercase key=site5.example.com -> val=site5.example.com  
  3. 192.168.1.2 - - [11/Sep/2008:22:09:25 +0800] [site5.example.com/sid#2840feb8][rid#28cbe050/initial] (4) RewriteCond: input='site5.example.com' pattern='^(.+)$' => matched  
  4. 192.168.1.2 - - [11/Sep/2008:22:09:25 +0800] [site5.example.com/sid#2840feb8][rid#28cbe050/initial] (6) cache lookup FAILED, forcing new map lookup  
  5. 192.168.1.2 - - [11/Sep/2008:22:09:25 +0800] [site5.example.com/sid#2840feb8][rid#28cbe050/initial] (5) map lookup OK: map=vhost[txt] key=site5.example.com -> val=/usr/local/www/data/5  
  6. 192.168.1.2 - - [11/Sep/2008:22:09:25 +0800] [site5.example.com/sid#2840feb8][rid#28cbe050/initial] (4) RewriteCond: input='/usr/local/www/data/5' pattern='^(/.*)$' => matched  
  7. 192.168.1.2 - - [11/Sep/2008:22:09:25 +0800] [site5.example.com/sid#2840feb8][rid#28cbe050/initial] (2) rewrite '/index.html' -> '/usr/local/www/data/5/index.html'  
  8. 192.168.1.2 - - [11/Sep/2008:22:09:25 +0800] [site5.example.com/sid#2840feb8][rid#28cbe050/initial] (2) local path result: /usr/local/www/data/5/index.html  
  9. 192.168.1.2 - - [11/Sep/2008:22:09:25 +0800] [site5.example.com/sid#2840feb8][rid#28cbe050/initial] (1) go-ahead with /usr/local/www/data/5/index.html [OK]  

 

Reference:Apache模块 mod_rewrite

更强大的方法:使用mod_vhost_alias(由Tonny推荐):

XML/HTML代码
  1. UseCanonicalName Off  
  2. VirtualDocumentRoot /usr/local/www/data/%0  

那么对http://site1.example.com/file.html的请求将会返回文件/usr/local/www/data/site1.example.com/file.html
Reference:Apache模块 mod_vhost_alias

Appendix:比较专业的模块(i_amok推荐)
http://www.oav.net/projects/mod_vhs/

Tags: apache, mass vhosts, mod_rewrite, 精华

@neatdns.com邮箱开放注册

前段时间搞的phpoo.com,好象,没有办法使用mail.phpoo.com进行访问,在网上查找了一下原因才发现,原来,google.com提供的cname,在国内是无法访问的,所以,只能通过https://mail.google.com/a/phpoo.com来进行访问,一下子感觉好不方便啊。

于是跑到live.com上面申请live domains的服务,而且,还能用来当作live messae的ID哦。现在已经开放申请了。
在每个内容详细页面,右边都有一个申请的图标,点击sign up,就可以开使申请了。

这个域名,我该用来提供一些其他什么服务呢?真犹豫啊。

谁给我点好建议?

Tags: neatdns, 邮箱, 注册, 开放

9月份编程语言排行榜发布-Delphi王者归来

 新闻来源:cnbeta.com

TIOBE编程语言9月份榜单发布,Delphi经过几个月持续上升后终于返回前10名,Ruby下降一位排名第11.
Position
Sep 2008
Position
Sep 2007
Delta in Position Programming Language Ratings
Sep 2008
Delta
Sep 2007
Status
1 1 Java 20.715% -0.99%   A
2 2 C 15.379% +0.47%   A
3 5 C++ 10.716% +0.78%   A
4 3 (Visual) Basic 10.490% -0.26%   A
5 4 PHP 9.243% -0.96%   A
6 8 Python 5.012% +1.99%   A
7 6 Perl 4.841% -0.58%   A
8 7 C# 4.334% +0.75%   A
9 9 JavaScript 3.130% +0.41%   A
10 14 Delphi 3.055% +1.83%   A
11 10 Ruby 2.762% +0.70%   A
12 13 D 1.265% -0.11%   A
13 11 PL/SQL 0.700% -1.16%   A--
14 12 SAS 0.640% -0.76%   B
15 23 ActionScript 0.472% +0.07%   B
16 16 Lisp/Scheme 0.419% -0.21%   B
17 18 Lua 0.415% -0.16%   B
18 22 Pascal 0.400% -0.03%   B
19 - PowerShell 0.384% 0.00%   B
20 17 COBOL 0.360% -0.27%   B
前10名其他语言排位没有变化。

Tags: delphi, code gear, pascal, object pascal, 编程语言

使用chrome进行发文

由于chrome不支持fck或者说fck不支持chrome,在下面的格式全没有了,不得己,重新编辑了一下。。。



前段时间提到,在mootools上面有一个测试JS速度的网页,因为听说chrome采用了V8引擎,于是又上去测试了一下。不知道是浏览器的问题呢,还是真的是解析的问题。在chrome下面,jQuery的平均分值是最高的。

selectors MooTools 1.2 JQuery 1.2.6 Prototype 1.6.0.2 YUI 2.5.2 Selector beta Dojo 1.1.1
final time (less is better) 138 111 431 425 149

一眼看出,jQuery是得分最高的。。。prototype和YUI对于它根本没有可比性。当然这也和jQuery是轻量级有关,可是prototype为什么分数会最低呢?呵呵

然后测试了一下其他的东西,因为chrome的选项实在太少了,除了在第一次启动的时候提醒我将google的一些设置保存过来之外,我实在看不到有什么好设置的。

然后打开浏览器,拼命的开新窗口,想看看内存占用会如何,不知道是因为我的机器的关系呢?还是什么,第一个打开的窗口占用了60多M的内存,其他每个窗口都占了30M、20M,逐渐递减 ,最好的占用了6M多,这样的话,合计下来,并不低于FF3

顺便提一下,我的fck editor,在chrome下无法显示了。看来要建议fck他们改进了。黑黑

打开网页的速度确实挺快,这点我承认

其他的,没有什么可以吸引我了。。。自带的develop工具感觉还行。
没有菜单真的不太习惯。。。

惊讶一下,在chrome里面,文件选择框变化好大。。。。不再是以往那样有一个框了,只有一个按钮。
刚才使用chrome另存图片的时候,一个向下箭头的图片在屏幕上自上而下的滑落然后隐藏,效果不错,同时在页面底部显示下载列表。。。

我不知道我这篇文章发出去会怎么样,如果格式变化的太利害,还是会用FF打开进行修改。。。,果然被我说中了,汗

图片附件(缩略图):
大小: 74.22 K
尺寸: 367 x 300
浏览: 2633 次
点击打开新窗口浏览全图

Tags: chrome, google browser, google浏览器, 测试, mootools

google浏览器终于出来了

昨天晚上还在想,GOOGLE什么时候会出浏览器呢,是不是会象暴雪一样成为跳票王,一大早打开google主页,在搜索栏下面就发现了

XML/HTML代码
  1. New! Download Chrome (BETA) - the new browser from Google  

 

点击就可以进入google chrome的界面,在许可它的授权协议后就可以进行下载了。不过,下载的仍然是一个简装包,安装时仍然需要上网下载。。。

目前正在下载中,说不定下一篇博客就是通过chrome打开、登录、发博文了。。。

Tags: google浏览器, chrome, software, google browser