2eew 发表于 2016-1-18 08:48:55

Apache虚拟主机和虚拟目录配置

虚拟主机:
    虚拟主机分为三种模式,基于域名、基于IP地址、基于端口号常用的为基于域名和IP地址。

虚拟目录:
    通常用来管理员存放一些文件,或者网页提供文件下载。



虚拟目录配置:

修改配置文件,在配置文件最下方加入如下内容:
# vim /usr/local/apache/conf/httpd.conf
Alias /test "/yum"      //定义虚拟目录“/test”,物理路径为“/yum”!
<Directory "/yum">      //定义目录访问权限
Options Indexes MultiViews FollowSymLinks      //固定格式
AllowOverride None             //固定格式
Order allow,deny    //匹配顺序为先允许,后拒绝
Allow from all      //设置允许所有人访问
Require all granted    //对这个目录给予授权
</Directory>


重启apache服务
# service httpd restart

用真机访问验证,访问的时候在地址末尾加上自己定义的虚拟目录名称



配置授权访问虚拟目录:

授权访问就是将虚拟目录开启身份验证

将上面的配置做如下修改:
Alias /test "/yum"
<Directory "/yum">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    AuthName "test"        //定义受保护的领域名称,该内容将在浏览器弹出的认证对话框中显示
    authtype basic        //设置认证的类型,basic为基本的认证
    authuserfile /usr/local/apache/user        //设置用于保存用户账号、密码的认证文件路径
    require valid-user        //要求只有认证文件中的合法用户才能访问。valid-user表示所有合法用户
</Directory>


使用htpasswd创建认证文件

# htpasswd -c /usr/local/apache/user tom
//第一次创建需要结合“-c”选项创建user文件,用户名为tom
New password:      //登录密码
Re-type new password:
Adding password for user tom
#
使用cat命令查看一下认证文件,发现自动就已经对密码进行了加密
# cat /usr/local/apache/user
tom:$apr1$ie7HCcn9$pOtEPa3Hip00xB8IyFnWp0
#

重启apache服务
# service httpd restart

访问验证





虚拟主机配置:


基于端口

在主配置文件的最下方插入如下内容关联一个新的配置文件:
# vim /usr/local/apache/conf/httpd.conf

//子配置文件的路径为Apache安装目录下的“conf.d”目录下的任何以“.conf”结尾的文件

# mkdir /web1      //创建第一个网站目录
# mkdir /web2      //创建第二个网站目录
# echo "<h1>This is test111</h1>" > /web1/index.html//写测试页
# echo "<h1>This is test222</h1>" > /web2/index.html
# mkdir /usr/local/apache/conf.d   //创建子配置文件目录

配置子配置文件
# vim /usr/local/apache/conf.d/vhost.conf
Listen 81    //要监听的端口号
listen 82
<Directory "/web1">      //目录的访问权限设置
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
    Require all granted
</Directory>
<VirtualHost 192.168.10.250:81>   //指定虚拟主机的IP地址和端口号
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /web1         //指定web文件目录
    ServerName 192.168.10.250      //域名
    ErrorLog logs/web1.com-error_log       //错误日志
    CustomLog logs/web1.com-access_log common//访问日志
</VirtualHost>
<Directory "/web2">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
    Require all granted
</Directory>
<VirtualHost 192.168.10.250:82>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /web2
    ServerName 192.168.10.250
    ErrorLog logs/web2.com-error_log
    CustomLog logs/web2.com-access_log common
</VirtualHost>

重启服务

# service httpd restart

访问测试




基于域名
与上面的配置基本相同只需要将ServerName的IP地址换成域名既可:

# vim /usr/local/apache/conf.d/vhost.conf
<Directory "/web1">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
    Require all granted
</Directory>
<VirtualHost 192.168.10.250>         //这个地方不要在给端口号了
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /web1
    ServerName www.web1.com         //输入域名
    ErrorLog logs/web1.com-error_log
    CustomLog logs/web1.com-access_log common
</VirtualHost>
<Directory "/web2">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
    Require all granted
</Directory>
<VirtualHost 192.168.10.250>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /web2
    ServerName www.web2.com
    ErrorLog logs/web2.com-error_log
    CustomLog logs/web2.com-access_log common
</VirtualHost>
重启服务
# service httpd restart

测试访问
由于没有搭建DNS服务器,所以修改hosts文件来实习域名解析:

C:\Windows\System32\drivers\etc         //hosts文件位置

将扩展修改为“.txt”

加入如下内容

修改完成后,将文件名还原即可访问




基于IP地址

添加一块网卡地址为192.168.10.100

修改配置文件
# vim /usr/local/apache/conf.d/vhost.conf
<Directory "/web1">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
    Require all granted
</Directory>
<VirtualHost 192.168.10.250>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /web1
    ServerName www.web1.com
    ErrorLog logs/web1.com-error_log
    CustomLog logs/web1.com-access_log common
</VirtualHost>
<Directory "/web2">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
    Require all granted
</Directory>
<VirtualHost 192.168.10.100>   //只需要修改此处网卡IP地址即可
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /web2
    ServerName www.web2.com
    ErrorLog logs/web2.com-error_log
    CustomLog logs/web2.com-access_log common
</VirtualHost>

重启服务

# service httpd restart

访问验证




页: [1]
查看完整版本: Apache虚拟主机和虚拟目录配置