apache - 虚拟主机

虚拟主机

在单一机器上运行多个网站(company1.example.com, company2.example.com)

虚拟主机方式:
基于IP:每个IP一个站点
基于域名:每个IP多个站点

主机配置以外的部分称为默认服务器、主服务器或全局服务器

基于域名

假设仅有一个IP地址,却想支持多个WEB站点。

ServerName 127.0.0.1
NameVirtualHost *:80

<VirtualHost *:80>
    ServerName elewei.cn
    DocumentRoot "/var/www/html/infoclue"
</VirtualHost>

<VirtualHost *:80>
    ServerName github.com/elewei
    DocumentRoot "/var/www/html/github"
</VirtualHost>

http -S 用于查看当前Apache中配置的虚拟主机信息

使用ServerAlias配置可以为一个特定虚拟主机指定多个域名

ServerName elewei.cn
ServerAlias www.elewei.cn elewei.com

如果虚拟主机域名无法找到,则执行第一个

问题:把所有请求(符合虚拟主机或使用IP地址)都导向默认主机,并处理可能出现的“404”错误信息。

<VirtualHost *:80>
    ServerName default
    DocumentRoot /www/htdocs
    ErrorDocument 404 /site_list.html
</VirtualHost>

基于IP

问题:在系统上设定多个IP地址,并想要在各个地址上支持一个网站。

ServerName 127.0.0.1

<VirtualHost 10.0.0.1>
    ServerName example.com
    DocumentRoot "/var/www/html/infoclue"
    
    ErrorLog /opt/data/www/logs/error_log
    CustomLog /opt/data/www/logs/access_log combined
</VirtualHost>

<VirtualHost 10.0.0.2>
    ServerName example2.com
    DocumentRoot "/var/www/html/infoclue2"
</VirtualHost>

默认方式的虚拟主机

接收所有未设定以IP寻址主机的请求

<VritualHost _default_>
    DocumentRoot /www/htdocs
</VritualHost>

_default_关键字会建立虚拟主机,处理所有未设定虚拟主机的地址:端口号的请求

混合使用虚拟主机

ServerName 127.0.0.1
NameVirtualHost 10.0.0.1:80
NameVirtualHost 10.0.0.2:80

<VirtualHost 10.0.0.1:80>
    ServerName elewei.cn
    DocumentRoot "/var/www/html/elewei"
</VirtualHost>

<VirtualHost 10.0.0.1:80>
    ServerName infoclue.net
    DocumentRoot "/var/www/html/infoclue"
</VirtualHost>

<VirtualHost 10.0.0.2:80>
    ServerName helpnow.cn
    DocumentRoot "/var/www/html/helpnow"
</VirtualHost>

<VirtualHost 10.0.0.2:80>
    ServerName moringing.net
    DocumentRoot "/var/www/html/moringing"
</VirtualHost>

测试环境中以端口寻址的虚拟主机

Listen 8080
<VirtualHost 10.0.0.1:8080>
    DocumentRoot /var/www/html/port8080
</VirtualHost>

Listen 9090
<VirtualHost 10.0.0.1:9090>
    DocumentRoot /var/www/html/port9090
</VirtualHost>    

多个地址显示相同的网页内容

NameVirtualHost 192.168.1.1:80
NameVirtualHost 192.168.1.2:80

<VirtualHost 192.168.1.1:80 192.168.1.2:80>
    DocumentRoot /www/vhost/server
    ServerName server.exmaple.com
    ServerAlias server
</VirtualHost>

使用模块mod_vhost_alias建立大量的虚拟主机

使用mod_rewrite规则建立大量虚拟主机

在数据库里定义虚拟主机mod_vhost_dbi

posted @ 2016-12-28 16:51  elewei  阅读(211)  评论(0)    收藏  举报