拿Nginx來講,在主配置nginx.conf裏包含虛擬主機配置:
include sites-enabled/*.conf;
新建虛擬主機時就在sites-enables裏新建一個文件,好比:
sites-enabled/a.com.conf
server {
listen 80;
server_name www.a.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
}
}
也就是訪問 www.a.com 都會反向代理給後端Apache監聽的8080處理.
利用Nginx的轉發能夠實如今一臺服務器上跑多個版本的Apache(PHP),只要不一樣版本的Apache(PHP)監聽不一樣的端口便可.
好比Apache(PHP5.4)監聽的端口是8081,那須要PHP5.4支持的用戶網站在生成Nginx虛擬主機配置時就轉發到8081端口.
同理,利用Nginx的fastcgi_pass轉發能夠實如今一臺服務器上跑多個版本的PHP-FPM,只要PHP-FPM監聽不一樣的端口便可.
Apache主配置文件httpd.conf中載入虛擬主機配置:
Include conf/extra/httpd-vhosts.conf
httpd-vhosts.conf裏有載入vhosts下的conf文件:
Include conf/extra/vhosts/*.conf
裏面的conf/extra/vhosts/a.com.conf虛擬主機:
<VirtualHost *:8080>
ServerAdmin webmaster@a.com
DocumentRoot "/png/www/a.com/public_html"
ServerName www.a.com
ServerAlias a.com
ErrorLog "/png/www/a.com/logs/httpd_error_log"
CustomLog "/png/www/a.com/logs/httpd_access_log" combined
<Directory "/png/www/a.com/public_html">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
/png/www/a.com是虛擬主機的目錄,裏面的public_html是根目錄,爲虛擬主機用戶分配一個該目錄的FTP用戶便可,好比使用ProFTPD的ftpasswd生成一個帳戶:
http://my.oschina.net/eechen/blog/303398
開發一個虛擬主機管理系統,無非就是調用adduser/ftpasswd生成FTP帳戶,以及生成Nginx和Apache的虛擬主機配置,生成後用nginx -t和httpd -S測試配置是否正確後重載服務生效.而PHP提供了衆多
文件系統操做函數和
字符串處理函數(替換/
正則匹配),PHP對數據庫有着良好的支持, 存儲虛擬主機的用戶信息天然也很方便.