天天看点

http的路径别名、虚拟主机、用户认证

<b>1、</b><b>httpd</b><b>路径别名</b>

  Alias

 其存在在/etc/httpd/conf/目录中httpd.conf文件中,

<a target="_blank" href="http://blog.51cto.com/attachment/201304/205756474.png"></a>

 其定义的语法格式为Alias /URL "local_path"

 大概意思就是用一个简单的路径来映射长路径:

 如图中, /icons/映射的路径为 “/var/www/icons/”

 <b> </b><b>例子:</b>

[root@Cyz ~]# mkdir -pv /bbs/forum          //创建路径  

mkdir: created directory `/bbs'  

mkdir: created directory `/bbs/forum'  

[root@Cyz ~]# cd /bbs/forum/  

[root@Cyz forum]# vim index.html            //为其创建主页并在其中添加信息,大致为  

                                         //Lujing Bieming –观察而已  

[root@Cyz forum]# vim /etc/httpd/conf/httpd.conf //编辑里面,  

//加上路径别名Alias /luntan "/bbs/forum"  

//需要注意,/luntan后是否有斜线需与  

// “//bbs/forum”对应,存在应同时存在  

[root@Cyz forum]# service httpd restart        //重启网络服务  

Stopping httpd:                                            [ OK ]  

Starting httpd:                                            [ OK ]  

[root@Cyz forum]#  

 然后打开浏览器输入 172.16.111.1/luntan查看内容,

<a target="_blank" href="http://blog.51cto.com/attachment/201304/205821249.png"></a>

<b>2</b><b>、虚拟主机</b>

 首先,我们来为虚拟主机分下类:

              虚拟主机:

                     基于IP的虚拟主机;

                     基于端口的虚拟主机;

                     基于域名的虚拟主机;

     虚拟主机的定义格式如下:

&lt;VirtualHost HOST&gt; 

&lt;/VirtualHost&gt; 

 <b>①前提</b>:得先取消中心主机,注释中心主机的DocumentRoot即可。因为虚拟主机和中心主机不能同时使用。/etc/httpd/conf/httpd.comf

<a target="_blank" href="http://blog.51cto.com/attachment/201304/205858497.png"></a>

 <b>②创建虚拟主机</b>:

   有2中方法:在/etc/httpd/conf/httpd.comf中定义VirtualHost,或者在conf.d目录下创建,这里选取在conf.d中创建

[root@Cyz conf.d]# vim virtual.conf  

// 首先我们来创建基于不同IP的虚拟主机  

&lt;VirtualHost 172.16.111.1:80&gt;    //:80是指web的默认端口80  

        ServerName hell.magedu.com  

        DocumentRoot "/www/magedu.com"  

&lt;VirtualHost 172.16.111.2:80&gt; 

        ServerName www.a.org  

        DocumentRoot "/www/a.org"  

:wq   //保存退出  

然后由于我们的文件目录还没创建,这里我们去创建这些目录文件

[root@Cyz ~]# mkdir -pv /www/{magedu.com,a.org}  

mkdir: created directory `/www'  

mkdir: created directory `/www/magedu.com'  

mkdir: created directory `/www/a.org'  

   //创建目录完成,下一步创建index.html文件  

[root@Cyz ~]# cd /www/magedu.com/  

[root@Cyz magedu.com]# vim index.html  

 //index.html文件中可随意添加,起到注释作用即可。  

[root@Cyz magedu.com]# cd /www/a.org/  

[root@Cyz a.org]# vim index.html //同上  

[root@Cyz a.org]# service httpd restart    //重启网络服务  

//这个时候。我们还没有为172.16.111.2添加别名,所以:  

[root@Cyz a.org]# ip addr add 172.16.111.2/16 dev eth0 //添加别名  

[root@Cyz a.org]# ip addr show                 //查看别名  

1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 16436 qdisc noqueue   

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00  

    inet 127.0.0.1/8 scope host lo  

2: eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast qlen 1000  

    link/ether 00:0c:29:15:c3:cf brd ff:ff:ff:ff:ff:ff  

    inet 172.16.111.1/16 brd 172.16.255.255 scope global eth0  

    inet 172.16.111.2/16 scope global secondary eth0     //这里说明已经添加完成  

这里,我们已经做好了基于IP的虚拟主机,这个时候我们打开ie浏览器来查看

然后,我们来创建基于不同端口的虚拟主机:

我们这里继续编辑

//在其中加入  

&lt;VirtualHost 172.16.111.1:8080&gt; 

        ServerName www.b.net  

        DocumentRoot "/www/b.net"  

:wq  

//继续去创建一个b.net目录并创建index.html(方法同上)  

[root@Cyz www]# mkdir b.net  

[root@Cyz www]# cd b.net  

[root@Cyz b.net]# vim index.html //内容起到标示作用即可  

//然后到conf/httpd.conf中启用监听端口8080  

[root@Cyz b.net]# vim /etc/httpd/conf/httpd.conf  

//找到Listen 80在其下添加  

Listen 8080  

[root@Cyz b.net]# service httpd restart    //重启网络服务  

然后我们继续访问

<a target="_blank" href="http://blog.51cto.com/attachment/201304/205932875.png"></a>

然后,我们来创建基于不同域名的虚拟主机:

首先我们要启用NameVirtualHost并制定在哪个地址上,监听哪个端口

//这里同样可以在httpd.conf中定义,也可以在我们在conf.d目录中创建的文件中定义,这里我们依然在conf.d目录中的文件中定义  

[root@Cyz ~]# vim /etc/httpd/conf.d/virtual.conf  

//在头部添加  

NameVirtualHost 172.16.111.2:80 //这里表明在111.2:80上实现不同域名的虚拟主机  

//然后我们继续在下面添加  

        ServerName www.d.gov  

        DocumentRoot "/www/d.gov"  

:wq  

//继续创建目录与文件  

[root@Cyz www]# mkdir d.gov  

[root@Cyz www]# cd d.gov  

[root@Cyz d.gov]# vim index.html //内容起到标示作用即可  

//这里需要注意的是:如果访问,需要能够解析两个主机名,最简单的方式就是编辑物理机的hosts文件,或者创建一个DNS服务器把那2个主机名解析到自己的主机下。这里我们用简单的方法编辑本机的hosts文件:  

//在hosts文件中加入  

    172.16.111.2   www.a.org  

    172.16.111.2   www.d.gov  

 hosts文件路径:

<a target="_blank" href="http://blog.51cto.com/attachment/201304/210252226.png"></a>

然后我们进行测试访问

<a target="_blank" href="http://blog.51cto.com/attachment/201304/210324314.png"></a>

到这里,我们已经完成了对虚拟主机的创建。

 <b>③为不同的站点添加各自的日志</b>

如果我们没有在conf.d下的virtual.conf中定义日志的存放位子。那么它就全部存在放了/var/log/httpd中,如果想更好的管理,将日志予以分类,我们便可以在virtual.conf中定义:

NameVirtualHost 172.16.111.2:80  

&lt;VirtualHost 172.16.111.1:80&gt; 

        CustomLog /var/log/httpd/magedu.com/access_log combined //添加内容  

//combined表示格式,前边表示访问时的存放路径  

        CustomLog /var/log/httpd/a.org/access_log combined //添加内容  

        CustomLog /var/log/httpd/d.gov/access_log combined //添加内容  

        CustomLog /var/log/httpd/b.net/access_log combined //添加内容  

//然后到var/log目录中创建这些目录  

[root@Cyz ~]# cd /var/log/httpd/  

[root@httpd ]# mkdir a.org b.net d.gov magedu.com  

[root@Cyz httpd]# service httpd restart    //重启网络服务  

然后在浏览器分别对这些网站进行访问  

[root@Cyz httpd]# tree //查看日志是否生成  

.  

|-- a.org  

|   `-- access_log  

|-- access_log  

|-- access_log.1  

|-- b.net  

|-- d.gov  

|-- error_log  

|-- error_log.1  

`-- magedu.com  

    `-- access_log  

4 directories, 8 files  

//可以tail命令查看日志内容  

<b>3</b><b>、用户认证</b>

如上实验。如果我们希望用户访问a.org的时候,要通过用户登录才能够访问

[root@Cyz httpd]# vim /etc/httpd/conf.d/virtual.conf  

//编辑文件,在2:80中添加  

        CustomLog /var/log/httpd/a.org/access_log combined  

        &lt;Directory "/www/a.org"&gt; ///  

        Options none  

        AllowOverride authconfig  

        AuthType basic           

        AuthName "Restrict area."      

        AuthUserFile "/etc/httpd/.htpasswd"  

        Require valid-user     //所有用户  

        &lt;/Directory&gt; 

//然后创建用户  

[root@Cyz ~]# htpasswd -c -m /etc/httpd/.htpasswd tom  

// -c表示指定路径,第一次创建的时候需要指出第二次不必,加上会覆盖原先的  

New password:  //不显示的输入  

Re-type new password:   

Adding password for user tom //创建成功  

[root@Cyz ~]# httpd –t //检查语法错误  

Syntax OK  

[root@Cyz ~]# service httpd restart    //重启网络服务  

然后来进行测试访问

<a target="_blank" href="http://blog.51cto.com/attachment/201304/210353922.png"></a>

输入用户名即可访问

本文转自 陈延宗 51CTO博客,原文链接:http://blog.51cto.com/407711169/1175692,如需转载请自行联系原作者

继续阅读