域名又称为FQDN,使用域名是为了解决ip地址不容易记的问题
一个完整的FQDN也就是域名,由主机名+域名组成
例如: www.baidu.com 主机名就是www而域名就是baidu.com
域名解析包含本地hosts文件解析和DNS服务器解析
系统中都会有一个hosts文件,用户可以自己定义ip和域名去自定义解析ip
DNS服务器相当于一个大型的专门写hosts的系统,PC机可以去指定DNS服务器,当PC机收到一个本地hosts中没有的域名,本地无法解析,就会转到PC机指定的DNS服务器中,让DNS服务器去解析,然后回应PC机,从而成功解析
因为计算机之间进行通信使用的是ip地址,但是对于用户来说,ip地址比较难记,所以就出现了域名解析,通过字母组成的单词,方便用户去记忆
将 域 名 解 析 成 i p 地 址 将域名解析成ip地址 将域名解析成ip地址
Web网站:有web1.0 和web2.0,web1.0侧重以编辑为特征,web2.0侧重于用户交互
web的几个基本概念分为: 网站、网页、主页、HTTP、URL、HTML、超链接
URL和URI很相似:
例如: URL=https://www.aaa.com/
https | 为用户访问使用的协议 |
---|---|
www.aaa.com | 为用户访问的域名,也可以是ip地址和端口号 |
/ | 为用户访问的资源,/就是绝对路径 |
静态页面: 页面直接由web服务进行解析 ,页面可以包含动态,但是内容是静止的。部署静态页面需要在服务器上安装能够解析静态页面的服务,nginx、httpd这两种web服务默认只能解析静态页面。
主页文件后缀名为.html .xml .htm
动态页面: 页面由php进行解析 ,页面会随着时间、环境、数据库数据等因素去进行相应的变化。部署动态页面同样需要在服务器上安装能够解析动态页面的服务(nginx、httpd等),还要安装php来解析动态页面。
主页文件后缀名为:.php .asp .jsp .pl .py .cgi
后 缀 不 同 就 是 开 发 语 言 不 同 , 动 态 页 面 一 般 以 编 程 语 言 编 写 后缀不同就是开发语言不同,动态页面一般以编程语言编写 后缀不同就是开发语言不同,动态页面一般以编程语言编写
一般分为:http超文本传输协议和https安全超文本传输协议
http | 监听端口默认为tcp的80端口,不进行加密传输 |
---|---|
https | 监听端口默认为tcp的443端口,进行加密传输 |
(1)HTTP: HTTP又称超文本传输协议,是现在互联网应用中使用最多的一种网络协议,协议的核心功能就是传输Web服务器上的以html为后缀的页面和其他文件
(2)HTTP版本: http0.9 已经被淘汰,http1.0和http1.1 是目前广泛使用的,http2.0 还没有普及
(3)HTTP协议传输过程:
(1)用户使用PC1的浏览器访问指定的URL也就是域名
(2)如果PC1有本地解析就直接进行域名解析进行访问,没有本地解析那就转发给指定的DNS服务器去进行域名解析
(3)获取端口号,一般是80或者443
(4)PC1连接到域名解析后的ip地址以及端口号
(5)PC1发送一条http get读取数据的请求
(6)PC1从服务器读取http响应
(7)关闭连接
(8)PC1浏览器成显示页面
(4)影响客户端访问web站点的因素: 客户端请求的网络I/O,web服务器请求页面的磁盘I/O
I / O : i n p u t 和 o u t p u t 即 上 传 和 读 取 I/O : input 和 output 即上传和读取 I/O:input和output即上传和读取
200 | 表示页面成功访问 ok |
---|---|
301 | 请求的页面永久跳转了 |
403 | 禁止访问该页面 |
404 | 找不到该页面 |
500 | 服务器内部错误 |
502 | 网管错误 |
503 | 当前服务不可用 |
504 | 网关请求超时 |
HTTP协议是一个应用层协议,报文主要分为: 请求报文和响应报文
当客户端请求一个网页时,会先通过http协议将请求的内容封装在http请求报文中并且发送给服务器
服务器收到客户端的请求报文后根据报文的协议规范,进行报文解析
服务器解析完成后向客户端返回响应报文
一般分为三个结构:
1、起始行,对报文进行描述,包括了三个部分
资源通过一组http头和呈现数据(如html文件或者图片视频等)返回给客户端
GET: 向特定的资源发送请求,它的本质就是发送一个请求来取得服务器上的某一资源,GET请求中,永远不会包含呈现数据
POST: 向指定资源提交数据进行处理请求,例如提交表单或者上传文件。
HEAD: 向服务器索与GET请求相同的响应,只不过响应体将不会被返回
2、头部,对报文中添加一些附加信息
3、主体,数据的主体
apache作为最早的web服务程序,它是通过http协议来提供网页浏览服务
模块化设置
开放源代码
跨平台应用
支持多种web编程语言
运行稳定
apache的核心模块叫做多路处理模块(Multi-Processing Module),简称MPM
常见的三种模式为: prefork、worker、event
使用httpd -v查看当前apache版本,httpd -V |grep "server MPM" 查看apache当前模式
httpd_2.2版本默认使用prefork,httpd_2.4版本默认使用worker
一 般 来 说 , 每 个 模 式 都 会 默 认 有 两 个 闲 置 进 程 , 所 以 一 般 来 说 如 果 只 剩 一 个 闲 置 进 程 , 那 么 a p a c h e 就 会 自 动 创 建 一 个 闲 置 进 程 一般来说,每个模式都会默认有两个闲置进程,所以一般来说如果只剩一个闲置进程,那么apache就会自动创建一个闲置进程 一般来说,每个模式都会默认有两个闲置进程,所以一般来说如果只剩一个闲置进程,那么apache就会自动创建一个闲置进程
惊群效应: 当所有进程都为休眠状态时,这个时候突然来了一个请求,这个请求会使所有进程都进行处理,但是最终只有一个进程可以进行 0处理,其他进程没有请求处理就又会进入休眠状态,这样的现象和性能浪费就叫做惊群效应,而apache几乎所有模式都有惊群效应
prefork是多进程模式,一个进程处理一个连接,每个进程相对来说都是独立的,这个过程会用到select机制来通知
优点: 稳定、响应快
缺点: 消耗大量cpu和内存、keep-alive长连接占据问题,不适用于高并发场景
———————————————————————————————————————————————————注释——————————————————————————————————————————————————————
keep-alive长连接占据问题:即tcp连接在发送后仍然与客户端保持连接状态,客户端的浏览器可以通过相同的连接去发送请求,这样虽然节省了为每个请求建立新连接的时间、节约了带宽并且减少了重复请求的次数加快了客户端访问的速度,但是在长连接状态下,进行长连接的接口是无法和新的请求进行连接的,从而导致进程越来越多,使cpu和内存过度负载,导致服务器卡顿
原理: prefork模式的进程只能创建一个线程,所以说prefork是一个进程处理一个连接
worker是多进程多线程模式,一个进程创建多个线程,每个线程响应一个连接请求,但是通知机制还是select不过可以接受更多的请求
优点: 节省资源,适用于高并发场景
缺点: 兼容性不好、稳定性不好,同样具有keep-alive长连接占据问题
原理: worker模式的进程可以创建多个线程,每个线程响应一个连接请求
event是worker的升级版,把服务器进程和响应连接请求进行了分离,基于异步I/O模型(即input和output上传读取是分开的)
I/O模型使event在连接请求过来后进程并不直接处理请求,而是交给其他机制来处理,然后通过epoll机制来确认请求是否完成。在这个过程中,进程本身一直处于空闲状态,所以一直可以接受用户的请求,从而实现一个进程响应多个连接请求。
event对于keep-alive长连接处理也有所优化,event模式有单独的线程去处理keep-alive长连接,执行完毕后才会允许长连接释放,这样增强了高并发场景下的连接请求处理能力。
优点: 支持海量级高并发负载,消耗资源少,适用于高并发场景
缺点: 对https支持的不完美
httpd是高度模块化的程序,也就是说httpd的各种功能都需要加载对应的模块来执行,但是前提是必须将使用功能的对应模块进行编译,方便httpd进行加载
[root@rzy ~]# tail -1 /usr/local/httpd/logs/access_log #查看最后一行
192.168.100.230 - - [13/Apr/2021:19:22:17 +0800] "GET / HTTP/1.1" 200 6
#注释:
192.168.100.230:远程主机ip,表示访问网站的是谁
- :这一行是用户的邮箱,但是为了避免用户的邮箱被垃圾邮件骚扰,第二列使用-取代
- :用于记录浏览者进行身份验证时提供的名字,这里为-是因为没有使用用户密码验证登录,例如用rzy 密码123登录,那么这里显示的就是rzy
[13/Apr/2021:19:22:17 +0800] :请求时间,表明用户访问的时间,采用公用日志格式或者标准英文格式,+0800表示服务器所处时区位于UTC之后的8小时
"GET /favicon.ico HTTP/1.1" :GET表示方法,/表示用户访问的资源这里表示的是网页目录的相对资源,HTTP/1.1表示用户访问时使用的协议
200 :状态码
6 :发送的字节数,可以查看配置主页的内容有多少字节
我这里使用的是虚拟机,使用真机查看时最后还会多一个字段,为访问用户的客户端系统、浏览器类型等信息
####
[root@rzy ~]# ll /usr/local/httpd/htdocs/
总用量 4
-rw-r--r-- 1 root root 6 4月 13 17:56 index.html #6 表示6个字节
系统 | ip地址 | 主机名 | httpd版本 |
---|---|---|---|
Centos7.4 | 192.168.100.202 | rzy | httpd-2.2.17.tar.gz |
******(1)先做初始配置
[root@rzy ~]# systemctl stop firewalld
[root@rzy ~]# setenforce 0
setenforce: SELinux is disabled
[root@rzy ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
mount: /dev/sr0 已经挂载或 /mnt 忙
/dev/sr0 已经挂载到 /mnt 上
[root@rzy ~]# rpm -e httpd --nodeps #检查httpd服务是否安装,如果两个httpd端口会冲突
错误:未安装软件包 httpd
******(2)上传httpd源码包,进行解压,安装
[root@rzy ~]# ll
总用量 6448
-rw-------. 1 root root 1264 1月 12 18:27 anaconda-ks.cfg
-rw-r--r-- 1 root root 6597991 4月 13 17:10 httpd-2.2.17.tar.gz
[root@rzy ~]# tar xf httpd-2.2.17.tar.gz -C /usr/src/
[root@rzy ~]# cd /usr/src/httpd-2.2.17/
[root@rzy httpd-2.2.17]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-cgi
#等待配置完成,模块注释:
--prefix= 指定安装目录
--enable-so 开启动态加载模块的功能
--enable-rewrite 开启地址重写、重定向功能
--enable-cgi 开启与一些动态编程语言之间进行交互的接口
#配置完成后进行编译安装
[root@rzy httpd-2.2.17]# make && make install
[root@rzy httpd-2.2.17]# echo $? #检测安装是否成功,使用$?来查看,返回为0则为成功
0
[root@rzy httpd-2.2.17]# ls /usr/local/httpd/ #检查prefix指定的安装路径下是否有了httpd的相关目录
bin build cgi-bin conf error htdocs icons include lib logs man manual modules
#常用目录注释:
bin 存放httpd的各种命令
lib 跟httpd相关的库文件
man httpd的帮助文档
modules httpd的模块文件
conf httpd的配置文件存放目录
htdocs httpd的网页存放位置
logs httpd的日志存放位置
build 存放httpd之前的配置信息的文件
###########
******(3)安装httpd后的优化配置
[root@rzy httpd-2.2.17]# cd
[root@rzy ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin/ #优化httpd执行命令路径
[root@rzy ~]# httpd -v #查看httpd的版本
Server version: Apache/2.2.17 (Unix)
Server built: Apr 13 2021 17:17:14
[root@rzy ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd #复制一份httpd的启动脚本
[root@rzy ~]# chmod -x /etc/init.d/httpd #添加可执行权限
[root@rzy ~]# /etc/init.d/httpd start #启动httpd
httpd: Could not reliably determine the server's fully qualified domain name, using fe80::34f4:cad:16ae:5b4d for ServerName #这个提示语是因为没有修改服务器域名
[root@rzy ~]# netstat -anpt | grep 80 #检查端口
tcp6 0 0 :::80 :::* LISTEN 53530/httpd
[root@rzy ~]# /etc/init.d/httpd stop #关闭httpd
httpd: Could not reliably determine the server's fully qualified domain name, using fe80::34f4:cad:16ae:5b4d for ServerName
[root@rzy ~]# netstat -anpt | grep 80 #检查端口
******(4)修改配置文件,配置网页文档
[root@rzy ~]# vim /usr/local/httpd/conf/httpd.conf
。。。。。。
87 #
88 ServerAdmin [email protected] #这个是管理员邮箱,不用修改,这是apache官方为了收集有多少人使用apache而创建的
89
。。。。。。
96 #
97 ServerName www.rzy.com:80 #修改域名可以解决刚才的报错问题
98
。。。。。。
131 <Directory "/usr/local/httpd/htdocs"> #这个区域用来指定网页的路径,并且可以设置网页,比如限制访问、认证等
132 Options Indexes FollowSymLinks #中间的#号可以全部删除
133 AllowOverride None
134 Order allow,deny
135 Allow from all #限制访问顺序:先允许,后拒绝,默认拒绝所有。
136 #先拒绝,后允许,默认允许所有
137 </Directory>
138
。。。。。。
143 <IfModule dir_module>
144 DirectoryIndex index.html #apache解析的主页,后续想安装php解析动态页面的话就可以添加index.php
145 </IfModule>
146
。。。。。。
163 #
164 ErrorLog "logs/error_log" #错误日志存放位置,这是一个相对路径是从prefix指定的安装路径开始的
165
。。。。。。
170 #
171 LogLevel warn #日志级别
172
。。。。。。
192 #
193 CustomLog "logs/access_log" common #访问日志存放位置,和错误日志相同都是相对路径
194
#保存退出
[root@rzy ~]# echo "aaaaa" > /usr/local/httpd/htdocs/index.html #创建目录
[root@rzy ~]# /etc/init.d/httpd start #开启httpd服务
[root@rzy ~]# netstat -anptu | grep 80 #检查端口
tcp6 0 0 :::80 :::* LISTEN 53568/httpd
(5)使用客户机测试是否可以正常访问httpd
发现可以正常访问
设置httpd的工作模式时,不仅要考虑网站的并发性能等工作效率,还要考虑服务器硬件cpu和内存的占用情况,内存尤为重要
[root@rzy ~]# /usr/local/httpd/bin/httpd -V | grep "Server MPM" #查看当前apache工作模式
Server MPM: Prefork
[root@rzy ~]# vim /usr/local/httpd/conf/extra/httpd-mpm.conf #查看配置文件中prefork的选项
。。。。。。
36 <IfModule mpm_prefork_module>
37 StartServers 5 #服务器启动时建立的子进程数量
38 MinSpareServers 5 #空闲子进程最小数量,当空闲子进程数少于该数值将产生新的子进程
39 MaxSpareServers 2 #空闲子进程最大数量,当空闲子进程数大于该数值将杀死多余的子进程
40 MaxClients 150 #限定最大用户并发数,是对apache性能影响最大的参数
41 MaxRequestsPerChild 10000 #每个子进程在其生存期间允许处理的最大请求数量,若为0则代表该进程不会因为请求数量的变化而停止。
42 </IfModule>
。。。。。。
#保存退出
[root@rzy ~]# vim /usr/local/httpd/conf/httpd.conf
。。。。。。
347 # Server-pool management (MPM specific)
348 Include conf/extra/httpd-mpm.conf #去掉#注释
349
。。。。。。
#保存退出
[root@rzy ~]# /etc/init.d/httpd restart #重启服务
[root@rzy ~]# ps aux | grep httpd | grep -v grep #查看进程发现创建了多个子进程
root 53568 0.0 0.1 28304 1980 ? Ss 17:57 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53612 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53613 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53614 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53615 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53616 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
#注意:
想要开启worker模式,需要在编译安装的时候使用 --with-mpm=worker选项指定,所以需要先使用make clean情况已经编译的内容,再重新编译
######
[root@rzy ~]# cd /usr/src/httpd-2.2.17/ #先进入解压源码包的目录
[root@rzy httpd-2.2.17]# make clean #清空已经编译的内容
[root@rzy httpd-2.2.17]# ./configure --prefix=/usr/local/httpd/ --enable-so --enable-rewrite --enable-cgi --with-mpm=worker && make && make install #重新进行编译,安装
[root@rzy httpd-2.2.17]# cd
[root@rzy ~]# /usr/local/httpd/bin/httpd -V | grep "Server MPM" #查看当前模式是否成功修改
Server MPM: Worker
[root@rzy ~]# vim /usr/local/httpd/conf/extra/httpd-mpm.conf #查看配置文件中worker模式的选项
。。。。。。
51 <IfModule mpm_worker_module>
52 StartServers 2 #服务器启动时建立的子进程数量
53 MaxClients 150 #限定最大用户并发数
54 MinSpareThreads 25 #空闲子线程最小数量,当空闲子线程数少于该数值将产生新的子线程
55 MaxSpareThreads 75 #空闲子线程最大数量,当空闲子线程数大于该数值将杀死多余的子线程
56 ThreadsPerChild 50 #每个子进程最大的并发线程数
57 MaxRequestsPerChild 10000 #每个子进程在其生存期间内允许服务的最大请求数量,设置为0则子进程将永远不会结束
58 </IfModule>
59
。。。。。。
#保存退出
[root@rzy ~]# ps aux | grep httpd | grep -v grep #查看子进程数
root 53568 0.0 0.1 28304 1980 ? Ss 17:57 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53612 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53613 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53614 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53615 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53616 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
[root@rzy ~]# cd /usr/src/httpd-2.2.17/
[root@rzy httpd-2.2.17]# make clean #同样进行配置清空
[root@rzy httpd-2.2.17]# ./configure --prefix=/usr/local/httpd/ --enable-so --enable-rewrite --enable-cgi --with-mpm=event && make && make install #使用--with-mpm=event安装
[root@rzy httpd-2.2.17]# cd
[root@rzy ~]# /usr/local/httpd/bin/httpd -V | grep "Server MPM" #查看模式是否修改成功
Server MPM: Event
[root@rzy ~]# vim /usr/local/httpd/conf/extra/httpd-mpm.conf #查看配置文件中event的选项
。。。。。。
110
111 <IfModule mpm_event_module> #手动编写
112 ServerLimit 1000 #服务器开启后最大的进程数
113 StartServers 20 #服务器启动时建立的子进程数
114 MinSpareThreads 25 #空闲子进程最小数,当空闲子进程少于该数值将产生新的子进程
115 MaxSpareThreads 1200 #空闲子进程最大数,当空闲子进程大于该数值将杀死多余的子进程
116 ThreadsPerChild 50 #每个进程的最大并发线程数
117 MaxRequestsPerChild 1000 #每个子进程再其生存期间内允许服务器的最大请求数量,为0则子进程永远不会结束
118 </IfModule>
。。。。。。
#保存退出
[root@rzy ~]# ps aux | grep httpd | grep -v grep #查看子进程数量
root 53568 0.0 0.1 28304 1980 ? Ss 17:57 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53612 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53613 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53614 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53615 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
daemon 53616 0.0 0.1 28304 1420 ? S 18:20 0:00 /usr/local/httpd/bin/httpd -k start
[root@rzy ~]# cat /usr/local/httpd/build/config.nice #查看配置时使用的模块信息
#! /bin/sh
#
# Created by configure
"./configure" \
"--prefix=/usr/local/httpd/" \
"--enable-so" \
"--enable-rewrite" \
"--enable-cgi" \
"--with-mpm=event" \
"$@"
[root@rzy ~]# /usr/local/httpd/bin/apachectl -D DUMP_MODULES #查看模块
Loaded Modules:
core_module (static) #static就是静态模块的意思
authn_file_module (static)
authn_default_module (static)
authz_host_module (static)
authz_groupfile_module (static)
authz_user_module (static)
authz_default_module (static)
auth_basic_module (static)
include_module (static)
filter_module (static)
log_config_module (static)
env_module (static)
setenvif_module (static)
version_module (static)
mpm_event_module (static)
http_module (static)
mime_module (static)
status_module (static)
autoindex_module (static)
asis_module (static)
cgid_module (static)
cgi_module (static)
negotiation_module (static)
dir_module (static)
actions_module (static)
userdir_module (static)
alias_module (static)
rewrite_module (static)
so_module (static)
Syntax OK
正常情况下不做任何配置如果写多个目录的话,用户访问的时候会全部显示出来。例如:
[root@rzy ~]# cd /usr/local/httpd/htdocs/
[root@rzy htdocs]# ll
总用量 4
-rw-r--r-- 1 root root 6 4月 13 17:56 index.html
[root@rzy htdocs]# rm -rf index.html
[root@rzy htdocs]# mkdir aaa
[root@rzy htdocs]# mkdir bbb
[root@rzy htdocs]# cd bbb/
[root@rzy bbb]# echo "bbbbb" > index.html
[root@rzy bbb]# cd ..
[root@rzy htdocs]# cd aaa/
[root@rzy aaa]# echo "aaaaa" > index.html
现在使用浏览器进行访问:
会显示所有网页目录,这样在真实环境中肯定是不允许,用户只有在ip后面跟网页目录才会显示相应的内容,例如:
那么只需要在配置文件中修改一样东西,就可以让用户访问不到所有的目录
[root@rzy aaa]# vim /usr/local/httpd/conf/httpd.conf
。。。。。。
131 <Directory "/usr/local/httpd/htdocs">
132 Options Indexes FollowSymLinks #把Indexes删除
133 AllowOverride None
134 Order allow,deny
135 Allow from all
。。。。。。
#删除后:
131 <Directory "/usr/local/httpd/htdocs">
132 Options FollowSymLinks
133 AllowOverride None
134 Order allow,deny
135 Allow from all
。。。。。。
[root@rzy aaa]# /etc/init.d/httpd restart #重启服务
再次进行访问
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P1E9w4f8-1619055222372)(F:\个人文档\markdown图片\image-20210413164939530.png)]
就会发现以及禁止访问了,必须在后面加目录名才可以
所有的目录**
[root@rzy aaa]# vim /usr/local/httpd/conf/httpd.conf
。。。。。。
131 <Directory "/usr/local/httpd/htdocs">
132 Options Indexes FollowSymLinks #把Indexes删除
133 AllowOverride None
134 Order allow,deny
135 Allow from all
。。。。。。
#删除后:
131 <Directory "/usr/local/httpd/htdocs">
132 Options FollowSymLinks
133 AllowOverride None
134 Order allow,deny
135 Allow from all
。。。。。。
[root@rzy aaa]# /etc/init.d/httpd restart #重启服务
再次进行访问
就会发现以及禁止访问了,必须在后面加目录名才可以