在nginx下配置自动虚拟主机

作者 : admin 于 2010年01月09日, 00:33:37
2010
01-9

以前用apache,很多虚拟主机的时候,用 mod_vhost_alias 模块去解决。nginx似乎没有这样的功能。

原来为了做这个功能,我用python写了一堆脚本,去自动管理nginx的配置文件,结果还是不理想。频繁重写配置文件,频繁重启,总会出现点问题。

在nginx的0.8.*下,发现了这样的功能:http://wiki.nginx.org/NginxHttpCoreModule

Since nginx 0.8.25 named captures can be used in server_name:
server {
server_name ~^(www\.)?(?.+)$;
location / {
root /sites/$domain;
}
}

大喜,于是乎做出如下配置,实现了nginx下自动虚拟主机的功能:

  1. server {
  2.      listen       80;
  3.      server_name  ~^(?P<domainname>.+)\.autovhost\.sunboyu\.cn$;
  4.      location / {
  5.          #autoindex  on;
  6.          root   /home/vhost/$domainname;
  7.          index  index.html index.htm;
  8.      }
  9.      access_log /home/autovhost.sunboyu.cn.log main;
  10. }
  11. </domainname>

测试通过。

我的开源虚拟主机管理系统nginx版本指日可待。

设计标准的通讯协议

作者 : admin 于 2009年05月17日, 23:48:25
2009
05-17

当然不会是底层通讯协议,因为TCP/IP已经为我们准备好了足够完善的通讯机制确保稳定安全。

此协议为七层应用协议,跟http ftp是平级的,使用socket进行通讯,可以兼容php、python、java、c等语言。

协议开源,使用点对点信息校验,满足普通应用。

协议模拟tcp封包过程,进行数据封装。

协议内容:(伪代码)

  1. struct vhost
  2. {
  3.     Head varchar(10),            //协议头
  4.     Version int(5),                 //版本
  5.     Timestamp int(5),            //时间戳
  6.     Length int(10),                //包长度
  7.     Signature varchar(10),      //签名
  8.     Date varchar(500)            //数据
  9. }

协议包包括了协议头,版本,时间戳,包长度、签名(防止数据篡改和伪造),数据。基本能满足应用。

控制端数据打包发送后,受控端只需返回接受成功即可,以便客户端及时作出判断。

底下针对此包做PHP版本的封包和python的解包部分。

注释:原来使用问答的方式进行通讯,需要多次数据的应答,而此次的修改只需一次即可完成,而打包封包在一端完成,这样对网络稳定性的依赖就会降低。

虚拟化产品市场分析

作者 : admin 于 2009年04月04日, 13:13:41
2009
04-4

我这里分析的虚拟化产品,主要是和IDC相关的一些虚拟产品。

我们常见的产品,比如虚拟主机(空间),VPS,服务器合租等。这类产品目前在市场上发展比较成熟,而且随着互联网发展,这类产品市场前景逐渐看好。

这点,从万网的发展路线就可以看出,中小企业越来越重视自己信息化的建设,而从百度的销售业绩也能看出,企业的投入逐渐从传统媒体转向了互联网。另外,各大IDC机房内,也有相当的托管机器是用在中小网站上。

而这些产品的基础构建,管理,对于不管是企业还是个人,都是一个问题。对于国内做虚拟主机产品的老大们,万网,新网都有自己的管理系统,而对于一些小型用户,一些开源的管理软件足矣,无非是增加点人力。

目前虚拟主机应用主流平台就是windows,linux,freebsd,windows系统首先有自己完善的管理机制和可供开发人员使用的API,对于unix相关系统,开源界更是提供了数不尽的资源。而这些产品更大的问题就是:他们只考虑了去如何管理一个系统,而并没有更多的考虑如何去运营这个系统,如何把产品更快投入商业生产中。

我熟知的成熟商业系统主要有cpanel系统,在整个产业都很出名的,因为美国很多主流虚拟主机提供商都使用这个系统。国内很出名的是创值立信,他们的产品可以算上国内老大了,据说他们的开发团队是从万网跑出来的一伙人,所以在经验和技术积累上很成熟。

但这两个系统都有致命的缺点,就是高昂的价格,不能被大众尤其是中小型的客户甚至个人所接受。

再说其他的一些产品。国产的蓝芒主机管理系统,也是行业内的佼佼者,它们的系统支持国内完善的业务流管理,跨平台的系统支持,可谓非常完善的产品。而再有一些小型的产品,基本都工作在windows下,而无法实现对windows/*nix混合集群的支持,这样就造成了部分客户的流失。

而一些开源的虚拟主机管理,其功能之强令人震撼,比如webmin主机管理平台,还有一些windows下的免费软件基本能实现对整个操作系统虚拟化的管理,但一旦涉及商用,就有很大的问题,其欠缺的不仅是支付,业务流,财务等,更难以实现的是对整个运营流程的管理。

而目前国内此市场上,或者产品功能的欠缺,或者价格的昂贵,对于一些初创的公司或者个人都是一个门槛,无法达到成本低廉化。

所以,我认为国内此类虚拟化管理软件还有很大的市场潜力,只要是能够适应市场的产品,会在如此大的市场份额中再分一杯羹。

我的一个虚拟主机配置,支持suexec+fastcgi+php+perl

作者 : admin 于 2008年11月22日, 13:36:07
2008
11-22
  1. <virtualhost *:80>
  2.     SuexecUserGroup www www
  3.     ServerAdmin webmaster@dummy-host.example.com
  4.     DocumentRoot "/home/www/php"
  5.     ServerName 192.168.43.129
  6.     ServerAlias www.dummy-host.example.com
  7.     ErrorLog "logs/dummy-host.example.com-error_log"
  8.     CustomLog "logs/dummy-host.example.com-access_log" combined
  9.     <directory /home/www/php>
  10.         AddHandler fcgid-script .php
  11.         AddHandler perl-script .pl .cgi
  12.         PerlResponseHandler ModPerl::Registry
  13.         PerlOptions +ParseHeaders
  14.         PerlOptions +SetupEnv
  15.         FCGIWrapper /home/www/php-cgi .php
  16.         Options ExecCGI +FollowSymLinks SymLinksIfOwnerMatch
  17.         allow from all
  18.     </directory>
  19. </virtualhost>

老一套,要注意的是各种脚本的映射,容器的合理使用。

伟大的进步

作者 : admin 于 2008年11月05日, 22:09:17
2008
11-5

博客很久没更新,导致alexa排名暴跌,因为最近在研究linux下apache+php的系统安全问题,这个问题困扰了好久。因为配置iis(之前有此文章)的时候,我设置了非常安全的iis站点用户和权限的隔离,但在linux下,总没有找到好的方法。

最近查阅了大量的资料,主要是了解apache的账户机制,suexec的工作原理,然后又翻看了大量的资料,终于搞清楚了一套完整的安全的lamp虚拟主机配置方法,能达到站点的权限隔离,进程账户的相对独立,以及对性能的控制。

在学习的过程中,常犯的错误,就是轻敌。总感觉这事不难,一会就搞定。但实际头疼了半个月。另外就是不看日志。到最后两天,大量的调试是在对比日志和理解日志的涵义,针对日志去进行配置。从我学linux的过程来看,看手册,翻日志,分析别人的案例,是学习的最佳途径。

关于安全配置linux虚拟主机的过程,我将另写文章。