yzqzs 发表于 2018-11-24 10:48:41

RHCE培训笔记——Apache

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

  实验平台为Centos 6.2,环境为:
  DNS服务器暨Apache服务器
  主机名:itpro    IP地址:192.168.56.53
  客户端测试机
  主机名:station   IP地址:192.168.56.123
  

  准备工作:
  先安装DNS和Apache相应的软件,直接使用yum 安装即可,并设置开机启动
  # yum install httpd bind bind-chroot
  # chkconfig httpd on
  # chkconfig named on
  # service httpd start
  # 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.配置区域配置文件,在末尾自定义区域(这里只定义正向解析,反向解析不定义)
  修改后内容如下:
  # 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
  # cd /var/named/
  # cp -p named.localhost op.com.zone
  # cp -p named.localhost sq.com.zone
  

  两文件的最终内容如下(其实是一样的):
  # cat op.com.zone
$TTL 1D
@       IN SOAns.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  

  # cat sq.com.zone
$TTL 1D
@       IN SOAns.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  

  # cd
  #
  

  4.重启named服务
  # service named restart
  Stopping named: .                                          
  Starting named:                                          
  

  

  二、Apache服务器配置
  

  1.首先创建测试需要用到的主面文件,如下:
  # cd /var/www/html/
  # ls

  index.htmlopsq
  # cat index.html
  this is home page
  server: 192.168.56.53
  # cat op/index.html
  this is op page
  server: 192.168.56.53
  # cat sq/index.html
  this is sq page
  server: 192.168.56.53
  

  2.修改主配文件/etc/httpd/conf/httpd.conf
  首先启用NameVirtualHost字段,该字段为一个基于域名的虚拟主机指定一个IP地址,*表示本机当前使用的IP地址。
NameVirtualHost *: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


DocumentRoot /var/www/html/op
ServerName www.op.com


DocumentRoot /var/www/html/sq
ServerName www.sq.com
  

  3.重启httpd服务
  # service httpd restart
  Stopping httpd:                                          
  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
  
  

  三、客户机测试
  首先要将客户机的DNS指向DNS服务器192.168.56.53。
  

  1.测试域名解析是否正常
  # nslookup www.op.com
  Server:         192.168.56.53
  Address:      192.168.56.53#53
  

  Name:   www.op.com
  Address: 192.168.56.53
  

  # cat /etc/resolv.conf
  nameserver 192.168.56.53
  # 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
……省略部分内容……

DocumentRoot /var/www/html/op
ServerName www.op.com


DocumentRoot /var/www/html/sq
ServerName www.sq.com
  

  修改完成后,重启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为例。
  在虚拟主机里使用容器来设置访问控制。
  

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

DocumentRoot /var/www/html/sq
ServerName www.sq.com

order allow,deny#先允许,后拒绝
allow from 192.168.56.#允许的内容,这里允许192.168.56.0网段来访
deny from 192.168.56.123#拒绝的内容,这里拒绝主机192.168.56.123来访

  

  重启httpd。
  此时,IP地址为192.168.56.123的主机无法访问www.sq.com主页,出现的是Apache测试页面,在/etc/httpd/logs/access_log日志中,可以看到403报错,如下:
  192.168.56.123 - - "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相比,访问控制顺序颠倒一下):

DocumentRoot /var/www/html/sq
ServerName www.sq.com

order deny,allow#先拒绝,后允许
allow from 192.168.56.
deny from 192.168.56.123

  

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

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

DocumentRoot /var/www/html/sq
ServerName www.sq.com

order deny,allow#先拒绝,后允许
allow from 192.168.56.123
deny from 192.168.56.

  

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

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

DocumentRoot /var/www/html/sq
ServerName www.sq.com

order allow,deny#先允许,后拒绝
allow from 192.168.56.123
deny from 192.168.56.

  

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

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




页: [1]
查看完整版本: RHCE培训笔记——Apache