感谢支持
我们一直在努力

Linux基本知识点总结——Apache

Linux下的Apache,软件包是httpd。Httpd的主配文件是/etc/httpd/conf/httpd.conf,其配置指令主要分三部分:控制整个Apache服务器行为的部分(即全局环境变量);定义主要或默认服务参数的指令;虚拟主机的设置参数。Httpd的相关资料多如牛毛,这里就不细说了,本文实验是结合dns和apache实现虚拟主机网站的发布。

实验平台为CentOS 6.2,环境为:

DNS服务器暨Apache服务器

主机名:itpro    IP地址:192.168.56.153

客户端测试机

主机名:station    IP地址:192.168.56.123

准备工作:

先安装DNS和Apache相应的软件,直接使用yum 安装即可,并设置开机启动

[root@itpro ~]# yum install httpd bind bind-chroot

[root@itpro ~]# chkconfig httpd on

[root@itpro ~]# chkconfig named on

[root@itpro ~]# service httpd start

[root@itpro ~]# service named start

一、先配置DNS服务器

1.配置主配文件/etc/named.conf

在options {}中,找出并修改以下三句内容:

listen-on port 53 { any; };#括号内容改为any

listen-on-v6 port 53 { any; };#改为any

allow-query    { any; };#改为any

2.配置区域配置文件,在末尾自定义区域(这里只定义正向解析,反向解析不定义)

修改后内容如下:

[root@itpro ~]# cat /etc/named.rfc1912.zones

……省略部分内容……

zone “sq.com” IN {

        type master;

        file “sq.com.zone”;

        allow-update { none; };

};

zone “op.com” IN {

        type master;

        file “op.com.zone”;

        allow-update { none; };

};

3.在/var/named下创建数据文件op.com.zone和sq.com.zone

[root@itpro ~]# cd /var/named/

[root@itpro ~]# cp -p named.localhost op.com.zone

[root@itpro ~]# cp -p named.localhost sq.com.zone

两文件的最终内容如下(其实是一样的):

[root@itpro named]# cat op.com.zone

$TTL 1D

@      IN SOA  ns.sq.com. root (

                                        0      ; serial

                                        1D      ; refresh

                                        1H      ; retry

                                        1W      ; expire

                                        3H )    ; minimum

        NS      ns

ns      A      192.168.56.53

www    A      192.168.56.53

 

 

[root@itpro named]# cat sq.com.zone

 

 

12345678910

$TTL 1D

@      IN SOA  ns.sq.com. root (

                                        0      ; serial

                                        1D      ; refresh

                                        1H      ; retry

                                        1W      ; expire

                                        3H )    ; minimum

        NS      ns

ns      A      192.168.56.53

www    A      192.168.56.53

 

 

[root@itpro named]# cd

[root@itpro ~]#

 

4.重启named服务

[root@zoro ~]# service named restart

Stopping named: .                                          [  OK  ]

Starting named:                                            [  OK  ]

二、Apache服务器配置

1.首先创建测试需要用到的主面文件,如下:

[root@itpro html]# ls

index.html  op  sq

[root@itpro html]# cat index.html

this is home page

server: 192.168.56.53

[root@itpro html]# cat op/index.html

this is op page

server: 192.168.56.53

[root@itpro html]# cat sq/index.html

this is sq page

server: 192.168.56.53

2.修改主配文件/etc/httpd/conf/httpd.conf

首先启用NameVirtualHost字段,该字段为一个基于域名的虚拟主机指定一个IP地址,*表示本机当前使用的IP地址。

NameVirtualHost *:80  #这一行默认是注释掉了的,要将其前面的#去掉

然后在文件末尾增加以下内容:

<VirtualHost *:80>

#    ServerAdmin webmaster@dummy-host.example.com

    DocumentRoot /var/www/html  #文档的根目录。默认情况下,所有的请求从这个目录进行应答

    ServerName 192.168.56.53  #机子的名称,用IP地址或域名表示

#    ErrorLog logs/dummy-host.example.com-error_log #可以指定错误日志存放目录,若不指定,默认是在/etc/httpd/logs/access_log里

#    CustomLog logs/dummy-host.example.com-access_log common

</VirtualHost>

<VirtualHost *:80>

    DocumentRoot /var/www/html/op

    ServerName www.op.com

</VirtualHost>

<VirtualHost *:80>

    DocumentRoot /var/www/html/sq

    ServerName www.sq.com

</VirtualHost>

 

 

3.重启httpd服务

[root@itpro ~]# service httpd restart

Stopping httpd:                                            [  OK  ]

Starting httpd: httpd: apr_sockaddr_info_get() failed for zoro

httpd: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName

                                                          [  OK  ]

三、客户机测试

 

1.测试域名解析是否正常

[root@station ~]# nslookup www.op.com

Server:        192.168.56.53

Address:        192.168.56.53#53

 

Name:  www.op.com

Address: 192.168.56.53

 

[root@station ~]# cat /etc/resolv.conf

nameserver 192.168.56.53

[root@station ~]# nslookup www.sq.com

Server:        192.168.56.53

Address:        192.168.56.53#53

 

Name:  www.sq.com

Address: 192.168.56.53

 

以上结果无异常,表示DNS服务器正常运行。

 

2.测试页面访问

使用firefox访问http://192.168.56.53时,返回的结果为:

this is home page server: 192.168.56.53

 

使用firefox访问http://www.op.com时,返回的结果为:

this is op page server: 192.168.56.53

 

使用firefox访问http://www.sq.com时,返回的结果为:

this is sq page server: 192.168.56.53

四、进一步调试

1. 在服务器上将httpd的主配文件/etc/httpd/conf/httpd.conf中的NameVirtualHost注释掉(先前启用了,现在重新注释掉),然后重启httpd,再查看测试结果。

到客户机上访问站点,会发现,无论是http://192.168.56.53、http://www.op.com、还是http://www.sq.com,返回的结果都是“this is home page server: 192.168.56.53 ”,即http://192.168.56.53的主面内容。

2.在上述操作1的基础上,再将“ServerName 192.168.56.53”的虚拟主机内容删除,即虚拟主机配置内容改为:

……省略部分内容……

#NameVirtualHost *:80

……省略部分内容……

<VirtualHost *:80>

    DocumentRoot /var/www/html/op

    ServerName www.op.com

</VirtualHost>

<VirtualHost *:80>

    DocumentRoot /var/www/html/sq

    ServerName www.sq.com

</VirtualHost>

修改完成后,重启httpd。

再在客户端使用浏览器访问,无论是http://192.168.56.53、http://www.op.com、还是http://www.sq.com,返回的结果都是“this is op page server: 192.168.56.53 ”,即http://www.op.com的主面内容。

3.在上述操作2的基础上,再将NameVirtualHost启用,即将httpd的主配文件/etc/httpd/conf/httpd.conf中的NameVirtualHost前的注释符#去掉,修改完成后,重启httpd。

再在客户端使用浏览器访问,访问http://192.168.56.53和http://www.op.com,返回的结果都是“this is op page server: 192.168.56.53 ”,访问http://www.sq.com返回的结果是“this is sq page server: 192.168.56.53 ”

综合以上三次操作,可以得出结论:

如果hpptd主配文件中,#NameVirtualHost *:80 被注释掉了(默认是被注释掉了的),则表示httpd的虚拟功能没有打开,此时无论在主配文件中写多少个虚拟主机(相应在,要在指定的DocumentRoot目录上建立站点页面,首页必须是index.html),最终只是第一个(写在最上面的)生效,即客户机访问所在的ServerName,最终都指向第一个ServerName对应的页面。

结论二,在启用了虚拟功能之后,主站(本文是http://192.168.56.53,对应/var/www/html/index.html),也要写入到虚拟主机里面,否则不会被访问。如操作3中,访问http://192.168.56.53时,实际上访问的不是主站,而是第一个虚拟主机http://www.op.com的页面。

五、访问控制

以上述配置文件的最后一个虚拟主机www.sq.com为例。

在虚拟主机里使用<Directory>容器来设置访问控制。

1. 将虚拟主机配置修改为以下内容:

<VirtualHost *:80>

    DocumentRoot /var/www/html/sq

    ServerName www.sq.com

        <Directory “var/www/html/sq”>

        order allow,deny  #先允许,后拒绝

        allow from 192.168.56.  #允许的内容,这里允许192.168.56.0网段来访

        deny from 192.168.56.123  #拒绝的内容,这里拒绝主机192.168.56.123来访

        </Directory>

</VirtualHost>

重启httpd。

此时,IP地址为192.168.56.123的主机无法访问www.sq.com主页,出现的是Apache测试页面,在/etc/httpd/logs/access_log日志中,可以看到403报错,如下:

192.168.56.123 – – [14/May/2013:07:13:55 +0800] “GET / HTTP/1.1” 403 5039 “-” “Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.24) Gecko/20111104 Red Hat/3.6.24-3.el6_1 Firefox/3.6.24”

除192.168.56.123外,192.168.56.0网段内的其他主机,都可以正常访问www.sq.com主页。

2. 将虚拟主机配置修改为以下内容(与操作1相比,访问控制顺序颠倒一下):

<VirtualHost *:80>

    DocumentRoot /var/www/html/sq

    ServerName www.sq.com

        <Directory “var/www/html/sq”>

        order deny,allow  #先拒绝,后允许

        allow from 192.168.56.

        deny from 192.168.56.123

        </Directory>

</VirtualHost>

重启httpd。

此时,192.168.56.0网段内的所有主机,包括192.168.56.123,都可以正常访问www.sq.com主页。

3. 将虚拟主机配置修改为以下内容(与操作2相比,允许和拒绝的内容互换了一下):

<VirtualHost *:80>

    DocumentRoot /var/www/html/sq

    ServerName www.sq.com

        <Directory “var/www/html/sq”>

        order deny,allow  #先拒绝,后允许

        allow from 192.168.56.123

        deny from 192.168.56.

        </Directory>

</VirtualHost>

重启httpd。

此时,IP地址为192.168.56.123的主机可以访问www.sq.com主页,除192.168.56.123外,192.168.56.0网段内的其他主机,不可以访问www.sq.com主页。

4. 将虚拟主机配置修改为以下内容(与操作3相比,访问控制顺序颠倒了;与2相比,访问控制顺序颠倒了,允许和拒绝的内容也互换了;与1相比,允许和拒绝的内容互换了):

<VirtualHost *:80>

    DocumentRoot /var/www/html/sq

    ServerName www.sq.com

        <Directory “var/www/html/sq”>

        order allow,deny  #先允许,后拒绝

        allow from 192.168.56.123

        deny from 192.168.56.

        </Directory>

</VirtualHost>

此时,192.168.56.0网段内的所有主机,包括192.168.56.123,都不可以访问www.sq.com主页。

综合以上四次操作,说明了什么问题呢?头晕了,说不清楚。两两组合的问题,在实际工作中,大概不会这样写的吧,就本次实验同一网段内的需求而言,只使用deny语句、不使用allow语句,会更方便地实现访问控制。

赞(0) 打赏
转载请注明出处:服务器评测 » Linux基本知识点总结——Apache
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏