nginx使用不同的用户来跑fastcgi

今天在freebsd下用ports方式安装nginx+php+mysql环境, nginx使用www用户来跑的, 然后使用lighttpd中附带的spawn-fcgi来启动php-cgi, 我依然是用www用户来跑的fastcgi, 但是服务器上有多个用户, 我不想让他们使用一个用户来跑, 从安全上的考虑, 我可不想别人跨目录搞自己的站, 现在的phpshell都这么NB.
后来经朋友指点发现可以启动不同的fastcgi进程来解决这个问题, 一个用户只启动自己的进程,用自己的端口, 后来想了一下, 真的非常简单, 在使用spawn-fcgi启动的时候指定不同的端口指定不同的用户多简单啊, 唯一不爽的就是要多几个配置文件, 至少得一个用户一个吧

nginx的虚拟主机配置文件里有加载php的地方, 类似如下的
location ~ .*\.php?$
{
include php5.conf;
}
这个时候你就可以指定不同的配置文件了, 例如在虚拟主机hao32.com.conf里, 你可以使用hao32这个用户来跑一系列php-cgi进程:
location ~ .*\.php?$
{
include php5_hao32.conf;
}
那么这个php5_hao32.conf文件里必须有:
fastcgi_pass  127.0.0.1:8809; (其中8809是hao32用户独立占用的端口, 可以自定义)

在启动nginx之前可以先使用spawn-fcgi以hao32用户和8099端口来启动一系列php-cgi进程, 以此类推, 可以启动多组不同用户的和不同端口的php-cgi进程,这样安全很多了。

来源:http://www.hao32.com/unix-linux/36.html

nginx/windows: nginx多虚拟主机配置

1.nginx.conf内容如下:

worker_processes 1;

error_log  /host/nginx/logs/error.log  crit;

pid        /host/nginx/logs/nginx.pid;

events {
worker_connections  64;
}

http {
include       /host/nginx/conf/mime.types;
default_type  application/octet-stream;

#charset  gb2312;

server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;

keepalive_timeout 60;

fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 128k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
client_body_temp_path /host/nginx/client_body_temp;
proxy_temp_path /host/nginx/proxy_temp;
fastcgi_temp_path /host/nginx/fastcgi_temp;

gzip on;
gzip_min_length  1k;
gzip_buffers     4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types       text/plain application/x-javascript text/css application/xml;
gzip_vary on;

client_header_timeout  3m;
client_body_timeout    3m;
send_timeout          3m;
sendfile                on;
tcp_nopush              on;
tcp_nodelay            on;
#设定虚拟主机
include       /host/nginx/conf/vhost/www_test_com.conf;
include       /host/nginx/conf/vhost/www_test1_com.conf;
include       /host/nginx/conf/vhost/www_test2_com.conf;
}

2.在conf目录下建立个vhost目录,在vhost目录下分别建立www_test_com.conf,www_test1_com.conf,www_test2_com.conf 3个文件

www_test_com.conf代码如下:

server {
listen 202.***.***.***:80;            #换成你的IP地址
client_max_body_size 100M;
server_name  www.test.com#换成你的域名
charset gb2312;
index index.html index.htm index.php;
root   /host/wwwroot/test;         #你的站点路径#打开目录浏览,这样当没有找到index文件,就也已浏览目录中的文件
autoindex on;

if (-d $request_filename) {
rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
}

error_page  404              /404.html;
location = /40x.html {
root  /host/wwwroot/test;       #你的站点路径
charset   on;
}

# redirect server error pages to the static page /50x.html
#
error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   /host/wwwroot/test;      #你的站点路径
charset   on;
}

#将客户端的请求转交给fastcgi
location ~ .*\.(php|php5|php4|shtml|xhtml|phtml)?$ {
fastcgi_pass   127.0.0.1:9000;
include /host/nginx/conf/fastcgi_params;
}

#网站的图片较多,更改较少,将它们在浏览器本地缓存15天
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires      15d;
}

#网站会加载很多JS、CSS,将它们在浏览器本地缓存1天
location ~ .*\.(js|css)?$
{
expires      1d;
}

location /(WEB-INF)/ {
deny all;
}

#设定日志格式
log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
#设定本虚拟主机的访问日志
access_log  /host/nginx/logs/down/access.log  access;   #日志的路径,每个虚拟机一个,不能相同
server_name_in_redirect  off;
}

3.www_test1_com.conf和www_test2_com.conf,文件和上面的基本相同,只要把红色提示的地方修改一下就可以了,具体的日志内容如下:

www_test1_com.conf如下:
..........

#设定日志格式
log_format  test1 '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
#设定本虚拟主机的访问日志
access_log  /host/nginx/logs/test1/test1.log  test1;   #日志的路径,每个虚拟机一个,不能相同
server_name_in_redirect  off;
}

www_test2_com.conf如下:
..........

#设定日志格式
log_format  test2 '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
#设定本虚拟主机的访问日志
access_log  /host/nginx/logs/test2/test2.log  test2;   #日志的路径,每个虚拟机一个,不能相同

华众虚拟主机5.2(破解版安装全程图解)

最近在网上看到了许多热衷于HZHOST 虚拟主机管理系统的朋友,但是又不会安装,
我在这里把自己的一点安装经验分享一下,希望能对朋友们有所帮助,这是一篇入门级的
教程,有经验的朋友可以略过,华众的虚拟主机管理系统是不错,但是对于刚刚创业的朋
友们来说,要花上几千元去购买一套正版的系统实在不太实际,所以还是用破解版的实惠
好了,进入正题,现在我来说一下安装的详细步骤.
(如果你看不到图片,请注册为会员,登录后就可以看到图片)

安装环境:
操作系统:Windows Server 2003 企业版
数据库:MS SQL 2000 + SP4(多说一句,在Windows 2003下,如果安装了
MS SQL 2000 而不安装 SP4那么 数据库不能用的,)
MySQL Sever 5.0 + MySQL ODBC 3.51
邮局系统:WinWebMail
HZHOST:HZHOST虚拟主机管理系统 v5.2.1

建议大家在安装华众的时候把以上软件都安装好,并测试其能正常运行,因为有好多朋
友向我反应在安好了华众后再安装的邮局系或MySQL数据库系统或多或少的存在问题,
所以为了避免节外生枝大家还是事先安装好了为好.

在安装前一定要保证你的数据库是可以正常访问的,否则可能对导致程序安装失败

第一步:在你的网卡上绑定两个IP地址218.5.76.188 218.5.76.177 子网掩码为
255.255.255.0


第二步:开始安装主控端



加密密匙:123456789ABCD(6-16 个字符的数字与下划线的组合就可以,可以随便写,只要你能记住就可了)
访问密码:ABCD123456789(6-16 个字符的数字与下划线的组合就可以,可以随便写,只要你能记住就可了)
侦听端口:默认(32317)


公网IP与内网IP都填写218.5.76.188其它的不用改


填入SA密码进行测试,看看你的MS SQL数据库能不能正常访问
系统数据库名和用户名和密码系统在安装的时候默认都是hzhost,这里建议修改成你自己的的数据库名,
用户名和密码,由于是只做演示所以我就用默认的了





主控端安装完成之后,我们来安装被控端
" target=_blank>




加密密匙和访问密码填写你刚才安装主控端的时候填写的加密密匙和访问密码


公网IP 内网IP 主控端IP都填写218.5.76.188 主控端口默认(32317) 访问密码填写你刚才的访问密码



主机总目录 填写你要开通虚拟主机的用户空间的存放目录,这里我采用的默认,我选择了提供纯FTP服务,服务目录我填写的d:\ftproot\ 当然你可以不选择提供这项服务,服务目录你也可以随便填写



这里是认你填写你要提供MS SQL 数据库服务时,用户的数据库文件的存放目录,由于My SQL 的用户存放目录在安装MySQL的时候就已经设订好了,所以这里没有那一项,你可以输入你的sa密码和root用户密码进行测试看看你的数据库能不能正常访问


选择企业邮局的提供程序,我的电脑上安的是WinWebMail,所以我选择的是WinWebMail








最后一步,我们来对安装好的软件进行注册,如果不注册是不能用的,下面我们来进行注册,打开注册机



这一步也比较关键,用户名和密码可以随便写,只是IP地址一定要写218.5.76.188,否则注册是不能成功的





呵呵!看到了吗,注册成功了,现在软件已经没有任何限制了

Nginx虚拟主机配置

Nginx的虚拟主机配置, 是通过"server"这个directive来进行了:

//========= 第一个虚拟主机

server {

listen 80;
server_name www.100.com;
root /usr/local/vhosts/100;

location / {
index index.php index.html index.shtml;
}

location ~ \.php$ {
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  /usr/local/vhosts/100$fastcgi_script_name;
include        fastcgi_params;
}

#log...
}

//========== 第二个虚拟主机

server {

listen 80;
server_name www.101.com;
root /usr/local/vhosts/101

location / {
index index.php index.html index.shtml;
}

location ~ \.php$ {
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  /usr/local/vhosts/101$fastcgi_script_name;
include        fastcgi_params;
}

#log...

}

//========== 第二个虚拟主机

server {

listen 80 default;
server_name www.102.com;
root /usr/local/vhosts/102;

location / {
index index.php index.html index.shtml;
}

location ~ \.php$ {
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  /usr/local/vhosts/102$fastcgi_script_name;
include        fastcgi_params;
}

#log...

}

上面配置基本完成,下面我们需要重启nginx服务才可以生效的,重启方法如下:
1.显示nginx进行id
#ps -aux | grep nginx

2.结果nginx的master进行pid
#kill -HUP 635

3.重启ngnix
#nginx

经过上面的配置,基本就可以看到我们的配置效果已经起作用了,注意上面的
astcgi_param  SCRIPT_FILENAME  /usr/local/vhosts/100$fastcgi_script_name;
粗体字一定要与上面的站点目录一样,否则就提示No input file specified错误.

有关nginx重启命令的详细介绍,请参考:http://blog.haohtml.com/index.php/archives/1305

上述配置中, 定义了三个虚拟主机。前两个Server,通过域名“www.100.com”和“www.101.com”可以分别访问正确的网站。如果浏览器直接通过IP地址或者其他指向这台机器的域名访问, 那么访问到的是第三个server配置。第三个server为一个默认配置, 请注意,它没有“server_name”指令, 并且“listen”指令包含一个“default”关键字。

这种办法当虚拟主机比较多的时候就显着特别的麻烦了,维护起来也是一个大问题,我们可以用include指令实现把每个主机的配置单独写到了个配置文件里,只需要在nginx.conf里用include指令包含过来就可以了.实现办法参考:用include指令实现nginx多虚拟主机配置

安全:解决Nginx文件类型错误解析漏洞的方法

对于使用nginx做为web服务的请注意对于多个server_name引起的问题及解决办法. 点击查看

关于Nginx+PHP的虚拟主机目录权限控制的一点探究

Nginx的使用者最近越来越多,很多大型网站也都从Apache或其他平台迁移到了Nginx。但在我使用Nginx的过程中有个问题一直未得到解决,就是如何限制Nginx+PHP的目录权限。

我们知道,在Apache中可以很容易的对虚拟目录进行权限控制,如:

程序代码 程序代码
<VirtualHost www.xpb.cn>
ServerAdmin xiaopb@live.com
DocumentRoot /usr/www/xpb/
ServerName www.xpb.cn:80
ServerAlias www.xpb.cn
ErrorLog logs/default-error_log
php_admin_value open_basedir "/tmp/:/usr/www/xpb/"
</VirtualHost>

关 键是后面的这句php_admin_value,这样就限制了php的操作目录仅限于/tmp/和/usr/www/xpb/这两个目录了。对于 Apache虚拟主机来说,这个设置十分有用,结合在php.ini中禁用一些php函数,几乎可以杜绝PHP木马对其他站点及系统的危害。我虽没专业做 过Linux下的虚拟主机,但相信各大虚拟主机商也是这么做的。据说Apache的suEXEC可以解决此问题,但是不仅配置复杂,貌似稳定性和负载性也 会受到影响,以下是我找到的一点资料:

引用内容 引用内容
suEXEC特性使得Apache可以使用与调用web服务器的用户不同的用户身份来运行CGI和SSI程序。而通常情况下,CGI或者SSI程序执行时使用和web服务器相同的用户身份。

正 确运用该特性,可以减少很多因为提供用户执行私有CGI或者SSI程序所带来的安全风险。但如果配置不当的话,则可能引起很多问题,使你的计算机产生更多 的安全漏洞。如果你对管理 setuid root 程序以及可能导致的安全问题不熟悉的话,我们强烈建议你不要使用suEXEC。

看来最好的办法还是使用“在php.ini中禁用一些危险的php函数和在Apache虚拟主机中配置php_admin_value”的方式来做虚拟主机的安全。

关 于Nginx的配置文件,参考了很多资料,好像是不支持php_admin_value open_basedir,也就是Nginx暂时还没有 Apache的 php_myadmin_value这类的设置。如果用Nginx做虚拟主机,各用户之间的目录安全控制如何来做呢?网上很多人说,限制 上传文件类型,做好程序安全不就行了么?对,对于自己的站点来说这样完全可以。但如果虚拟主机是给别人用的,又给予了FTP权限,总不能不让人上传php 文件吧。参考以上,如果用Nginx来做虚拟主机,目前看来安全的配置方法是:


1、用低权限账号运行Nginx。

2、在php.ini中禁用危险的函数。如:system,passthru,shell_exec,exec,popen,proc_open,chroot,scandir,chgrp,chown等,但禁止太多的函数可能对某些php程序的正常运行产生影响。

3、 在php.ini中设置open_basedir,如:open_basedir = "/usr/local/webserver/nginx /html/www.xpb.cn_7da347bc1a9fd621/:/usr/local/webserver/nginx/html/www2.xpb.cn_7da347bc1a9fd621/"

4、各个虚拟主机用户放在不易于猜到的目录,如:www.xpb.cn_7da347bc1a9fd621、www2.xpb.cn_7da347bc1a9fd621

5、自己找一个php木马,自我测试服务器安全!

另外,暂时还未发现专门针对Nginx的虚拟主机管理软件,如果有知道的可以麻烦说下。

看来,在虚拟主机上还是Apache是王道,几乎所有的虚拟主机提供商的专业PHP虚拟主机仍然采用Apache。期待Nginx能够尽快完善这方面的功能设置!有更好解决方法的,也烦请告知。

顺 便提示一下,并非用apache就安全,也并非用linux就安全。在windows下使用Apache,务必配置一下open_basedir ,甚至 Apache运行权限,因为默认Apache是以system权限运行的,如果站点一旦被上传木马,则会十分危险,当然Linux下的也要设置一下,相信 熟悉linux的都应当熟悉,不再赘述。

关于Nginx:

1、简介
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。

Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了

。Igor 将源代码以类BSD许可证的形式发布。尽管还是测试版,但是,Nginx 已经因为它的稳定性、丰富的功能

集、示例配置文件和低系统资源的消耗而闻名了。
更多的请见官方wiki: http://wiki.codemongers.com/

2、 Nginx的优点

nginx做为HTTP服务器,有以下几项基本特性:
1)        处理静态文件,索引文件以及自动索引;打开文件描述符缓冲.
2)        无缓存的反向代理加速,简单的负载均衡和容错.
3)        FastCGI,简单的负载均衡和容错.
4)        模块化的结构。包括gzipping, byte ranges, chunked responses, 以及 SSI-filter等filter。如

果由FastCGI或其它代理服务器处理单页中存在的多个SSI,则这项处理可以并行运行,而不需要相互等待。
5)        支持SSL 和 TLS SNI.

Nginx专为性能优化而开发,性能是其最重要的考量, 实现上非常注重效率 。它支持内核Poll模型,能经受

高负载的考验, 有报告表明能支持高达 50,000 个并发连接数。

Nginx 具有很高的稳定性。其它HTTP服务器,当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响应,只能重启 服务器。例如当前apache一旦上到200个以上进程,web响应速度就明显非常缓慢了。而Nginx采取了分阶段资源分配技术,使得它的CPU与内存 占用率非常低。nginx官方表示保持10,000个没有活动的连接,它只占2.5M内存,所以类似DOS这样的攻击对nginx来说基本上是毫无用处 的。就稳定性而言, nginx比lighthttpd更胜一筹。

Nginx支持热部署。它的启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下,对软件版本进行进行升级。

Nginx采用master-slave模型, 能够充分利用SMP的优势,且能够减少工作进程在磁盘I/O的阻塞延迟。当采用select()/poll()调用时,还可以限制每个进程的连接数。

Nginx 代码质量非常高,代码很规范, 手法成熟, 模块扩展也很容易。特别值得一提的是强大的Upstream与Filter链。 Upstream为诸如 reverse proxy, 与其他服务器通信模块的编写奠定了很好的基础。而Filter链最酷的部分就是各个filter不必等待前一个 filter执行完毕。它可以把前一个filter的输出做为当前filter的输入,这有点像Unix的管线。这意味着,一个模块可以开始压缩从后端服 务器发送过来的请求,且可以在模块接收完后端服务器的整个请求之前把压缩流转向客户端。

Nginx采用了一些os提供的最新特性如对sendfile (Linux 2.2+),accept-filter (FreeBSD 4.1+),TCP_DEFER_ACCEPT (Linux 2.4+) 的支持,从而大大提高了性能。

Nginx安装简记(含PHP支持、虚拟主机、反向代理负载均衡)

Nginx安装简记(含PHP支持、虚拟主机、反向代理负载均衡)

2008-10-11 TsengYia#126.com

Nginx,据说高性能和稳定性比Apache还牛,并发连接处理能力强,低系统资源消耗。目前已有250多万web站点在使用(据http://survey.netcraft.com/Reports/200809/)。
################################################################
系统环境:RHEL5 [ 2.6.18-8.el5xen ]

软件环境:
nginx-0.7.17
lighttpd-1.4.20.tar.gz
pcre-6.6-1.1
pcre-devel-6.6-1.1
php-5.1.6-5.el5

参考下载地址:
http://sysoev.ru/nginx/nginx-0.7.17.tar.gz (最新稳定版为0.6.32)
http://www.lighttpd.net/download/lighttpd-1.4.20.tar.gz
##########################################################################

一、安装支持软件
1、安装lighttpd以提取spawn-fcgi (如果站点不包含php页面,可以不安装spaw-fcgi、PHP)
shell> tar zxvf lighttpd-1.4.20.tar.gz
shell> cd lighttpd-1.4.20/
shell> ./configure && make
shell> cp -p src/spawn-fcgi /usr/sbin/spawn-fcgi
2、安装pcre和php(以下软件)
可使用RHEL5自带的rpm包安装,过程略。

二、安装nginx
shell> tar zxvf nginx-0.7.17.tar.gz
shell> cd nginx-0.7.17/
shell> ./configure --prefix=/opt/nginx --with-http_stub_status_module --with-http_ssl_module
shell> make && make install
shell> ln -sf /opt/nginx/sbin/nginx /usr/sbin/

三、nginx运行控制
1、检查配置文件有无语法错误
shell> nginx -t
2、启动(不带任何参数直接运行即可)
shell> nginx
3、重新加载nginx配置
shell> killall -s HUP nginx    #//或者 killall -1 nginx
4、处理完当前请求后退出nginx
shell> killall -s QUIT nginx    #//或者 killall -3 nginx

四、nginx配置用例
1、常规配置
shell> vi /opt/nginx/conf/nginx.conf
worker_processes 1;    #//工作进程数
events {
use epoll;    #//增加该事件提高I/O性能
work_connections 4096;
}
http {
include mime.types;
default_types application/octet-stream;
sendfile on;
tcp_nodelay on
keepalive_timeout 60;
server {
listen 80;    #//设置监听端口,注意不要和Apache等其他Web程序冲突
server_name www.linux.org;    #//指定使用的主机名
charset utf-8;    #//指定站点文件的默认编码
location / {
root html;    #//设置网站根目录
index index.html index.html;
}
error_page 500 502 503 504 /50x.html
location = /50x.html {
root html;
}
}
}

2、添加状态监控
shell> vi /opt/nginx/conf/nginx.conf    #//增加以下内容
location ~ ^/NginxStatus/ {
stub_status on;
access_log off;
}
shell> killall -1 nginx
#//使用浏览器访问 http://nginx_server_ip/NginxStatus/ 即可看到状态统计页面。(三个数字分别表示:总共处理连接数、成功创建的握手次数、总共处理的请求数)

3、通过FastCGI方式支持PHP语言
1)启动FastCGI服务(用php-cgi做实际处理php页面的程序,用spawn-fcgi是便于同时开启多个php-cgi进程——“-C”选项控制子进程数)
shell>/usr/sbin/spawn-fcgi -a 127.0.0.1 -p 9000 -f /usr/bin/php-cgi -C 10
2)修改/opt/nginx/conf/nginx.conf配置文件,添加以下内容:
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
3)重新加载配置
shell> killall -1 nginx

4、虚拟主机设置
修改nginx.conf文件,增加一个server {……}配置即可,每个虚拟主机的参数可以独立配置。
http {
server {
listen          80;
server_name     www.vhost1.com;
access_log      logs/vhost1.access.log main;
location / {
index index.html;
root /var/www/vhost1;    #//第1个虚拟主机的网页根目录
}
}
server {
listen          80;
server_name     www.vhost2.com;
access_log      logs/vhost2.access.log main;
location / {
index index.html;
root /var/www/vhost2;    #//第2个虚拟主机的网页根目录
}
}
}

5、基于反向代理的负载均衡
修改nginx.conf文件,增加upstream配置,指定对应服务器群的IP和权重,并调整server段中的网页根目录配置。使访问nginx服务器的HTTP请求分散到Web群集中的服务器来处理。
http {
upstream my_web_cluster {
server 192.168.2.11:8000 weight=3;
server 192.168.2.12:8000 weight=3;
server 192.168.2.13:8000 weight=3;
server 192.168.2.14:8000 weight=3;
server 192.168.2.15:8000 weight=3;
}
server {
listen 80;
server_name www.domain.com;
location / {
proxy_pass http://my_web_cluster;
proxy_set_header x-real-IP $remote_addr;
}
#//注:其他的location配置段(如关于.php文件的)需注释掉,否则可能影响该类文件的重定向。
}
}

---------------------------------------------------------------------
参考网址:
http://wiki.codemongers.com/NginxChsVirtualHostExample
http://www.ibm.com/developerworks/cn/web/wa-lo-nginx/
本文来自: (www.91linux.com) 详细出处参考:http://www.91linux.com/html/article/guanli/20081013/13536.html

推荐一批开源或免费虚拟主机管理系统

1. ZPanel - 在Windows下的免费Hosting Panel

网址:
http://sourceforge.net/projects/zpanel/
http://www.thezpanel.com/

中文讨论:
http://www.twftp.org/phpbb/viewtopic.php?t=3104

2. web-cp - *nix的虚拟主机管理

网址:
http://sourceforge.net/projects/webcp/
http://www.web-cp.net/

中文讨论:
http://www.twftp.org/phpbb/viewtopic.php?t=5095

3. VHCS - Virtual Hosting Control System - 一样是*nix系统的,不过比ZPanel还热门喔

网址:
http://sourceforge.net/projects/vhcs/
http://www.vhcs.net/

其他的:

http://sourceforge.net/search/?words=hosting

webmin的虚拟主机管理模块virtualmin- -

webmin是一个可运行于Linux/freebsd的web界面的主机管理系统,本身自带以及有人贡献了不少模块

而virtualmin则是它的一个虚拟主机管理模块,功能如下图:

webmin官方站: http://www.webmin.com/
virtaulmin站点: http://www.swelltech.com/virtualmin/

基于php/mysql的虚拟主机控制程序PHPMyWebHosting- -

PHPMyWebHosting是个开源的,基于php/mysql的虚拟主机控制面板程序,你可以用它建立带有邮箱,mysql支持的多域名虚拟主机
它须建立在Linux/freebsd之上,不支持windows

安装phpmywebhosting你必须拥有系统管理员(root)权限,并依次安装以下套件:

MySQL
Apache and PHP
Postfix
Maildrop
Courier
ProFTPd
PHPMyWebHosting

官方站上有基于各平台详细的安装说明 http://www.ladse.de

phpmywebhosting下载:http://www.ladse.de/index.php/Files

SysCP虚拟主机管理系统[全php版]- -

1.有中文包
2.admin,reseller,client 三级管理
3.全部为php代码构成
4.有不少模块(modules)供选择安装
5.开源,免费(基于GPL)
6.Linux/bsd环境,特别是debian(最初是专为它开发的)

是德国人写的,有简体中文,英文,法文,德文语言包,是多语言的

用户界面:

管理员界面:

具有以下特性:

Customer Interface
managing email accounts
managing email forwarders
managing subdomains
managing mysql databases
managing additional ftp account
managing .htaccess password protections for directories
managing path options for example directorylisting
Admin Interface:
managing of customers: you can define exactly what kind of resources your customers get (e.g. amount of pop accounts, amount of mysql databases etc.)
manage domains: you can individualy edit zone files and directory index per domain
支持以下配套服务器或引擎:

webserver: [Apache 1.3] with [PHP4] (apache2.0.x也可以)
mail transfer agent: [Postfix]
pop/imap server: [Courier]
ftp server: [ProFTPd]
database server: [MySQL]
nameserver: [Bind9]
traffic accounting and statistics: [Webalizer]

官方站:http://www.syscp.de/ 
下载:http://www.syscp.de/wiki/EnDownloads
模块下载:http://modules.syscp.de/
在线演示:http://www.syscp.de/onlinedemo/index.php

现在最新版是Version 1.2.7, 2005.2.11推出的

apache 中控制虚拟主机的php功能

使用情况分以下两种:

一,在httpd.conf中配置了全局使用php脚本,则使用下面的方法
在虚拟主机的设置小节中添加php_flag engine on/off 字串7

如: 字串9

<VirtualHost 61.156.20.89:80>
ServerName xxxxxx.com
php_flag engine off
serveralias www.xxxxxx.com
ServerAdmin webmaster@hanxiao2000.com
DocumentRoot "/home/xxxxxx/htdocs"
</VirtualHost> haohtml.com

二.没有在httpd.conf中配置执行php脚本功能

 

 

在虚拟主机配置中这样改:

 

 

  把 AddType   application/x-httpd-php   .php   这句话放到需要运行php的虚拟主机的配置中
    
  #这个虚拟主机不能运行php  
  <VirtualHost   127.0.0.1>  
          ServerAdmin   sc@lin.net.cn  
          DocumentRoot   d:/www.haohtml.com/  
          ServerName   www.haohtml.com  
  </VirtualHost>  
   
  #这个虚拟主机可以运行php  
  <VirtualHost   127.0.0.1>  
          ServerAdmin   sc@lin.net.cn  
          DocumentRoot   d:/www.haohtml.com/  
          ServerName   www.haohtml.com  
          AddType   application/x-httpd-php   .php 
  </VirtualHost>

说明:如果要禁止某个目录禁止执行php脚本,则为
<Directory   你的图片目录>  
                <FilesMatch   "\.(php|php3)$">    
                      Deny   from   all  
                </FilesMatch>   
 </Directory>