欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

如何在Linux上设置Apache的虚拟主机和目录?

最编程 2024-02-03 09:57:10
...

虚拟主机:

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

虚拟目录:

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



虚拟目录配置:


修改配置文件,在配置文件最下方加入如下内容:

[root@CentOS-3 ~]# 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服务

[root@CentOS-3 ~]# 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创建认证文件


[root@CentOS-3 ~]# htpasswd -c /usr/local/apache/user tom  

//第一次创建需要结合“-c”选项创建user文件,用户名为tom

New password:        //登录密码

Re-type new password:

Adding password for user tom

[root@CentOS-3 ~]#

使用cat命令查看一下认证文件,发现自动就已经对密码进行了加密

[root@CentOS-3 ~]# cat /usr/local/apache/user

tom:$apr1$ie7HCcn9$pOtEPa3Hip00xB8IyFnWp0

[root@CentOS-3 ~]#



重启apache服务

[root@CentOS-3 ~]# service httpd restart


访问验证




虚拟主机配置:

基于端口


在主配置文件的最下方插入如下内容关联一个新的配置文件:

[root@CentOS-3 ~]# vim /usr/local/apache/conf/httpd.conf

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


[root@CentOS-3 ~]# mkdir /web1      //创建第一个网站目录

[root@CentOS-3 ~]# mkdir /web2        //创建第二个网站目录

[root@CentOS-3 ~]# echo "<h1>This is test111</h1>" > /web1/index.html  //写测试页

[root@CentOS-3 ~]# echo "<h1>This is test222</h1>" > /web2/index.html  

[root@CentOS-3 ~]# mkdir /usr/local/apache/conf.d     //创建子配置文件目录


配置子配置文件

[root@CentOS-3 ~]# 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>


重启服务

[root@CentOS-3 ~]# service httpd restart


访问测试




基于域名

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

[root@CentOS-3 ~]# 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>

重启服务

[root@CentOS-3 ~]# service httpd restart


测试访问

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

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

将扩展修改为“.txt”

加入如下内容

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



基于IP地址


添加一块网卡地址为192.168.10.100


修改配置文件

[root@CentOS-3 ~]# 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>


重启服务


[root@CentOS-3 ~]# service httpd restart


访问验证




推荐阅读