Web基础

Posted 礁之

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web基础相关的知识,希望对你有一定的参考价值。

文章目录


前些天发现了一个巨牛的人工智能学习网站,内容通俗易懂、风趣幽默,忍不住想分享一下。对人工智能感兴趣的同学可以去看看哦
点击跳转到网站。

一、DNS概述

1、域名

域名又称为FQDN,使用域名是为了解决ip地址不容易记的问题
一个完整的FQDN也就是域名,由主机名+域名组成
例如: www.baidu.com 主机名就是www而域名就是baidu.com

2、域名解析

域名解析包含本地hosts文件解析和DNS服务器解析

  • 系统中都会有一个hosts文件,用户可以自己定义ip和域名去自定义解析ip

  • DNS服务器相当于一个大型的专门写hosts的系统,PC机可以去指定DNS服务器,当PC机收到一个本地hosts中没有的域名,本地无法解析,就会转到PC机指定的DNS服务器中,让DNS服务器去解析,然后回应PC机,从而成功解析

3、为什么要使用域名解析(DNS服务器)

因为计算机之间进行通信使用的是ip地址,但是对于用户来说,ip地址比较难记,所以就出现了域名解析,通过字母组成的单词,方便用户去记忆

4、DNS服务器的作用

将域名解析成 i p 地址 将域名解析成ip地址 将域名解析成ip地址

5、域名解析的过程

6、网站的基本概念

Web网站:有web1.0 和web2.0,web1.0侧重以编辑为特征,web2.0侧重于用户交互

web的几个基本概念分为: 网站、网页、主页、HTTP、URL、html、超链接

URL和URI很相似:

  • URL的资源位置是绝对路径
  • URI的资源位置是相对路径

例如: URL=https://www.aaa.com/

https为用户访问使用的协议
www.aaa.com为用户访问的域名,也可以是ip地址和端口号
/为用户访问的资源,/就是绝对路径

7、页面的分类和区别

  • 静态页面: 页面直接由web服务进行解析 ,页面可以包含动态,但是内容是静止的。部署静态页面需要在服务器上安装能够解析静态页面的服务,nginx、httpd这两种web服务默认只能解析静态页面。

    主页文件后缀名为.html .xml .htm

  • 动态页面: 页面由php进行解析 ,页面会随着时间、环境、数据库数据等因素去进行相应的变化。部署动态页面同样需要在服务器上安装能够解析动态页面的服务(nginx、httpd等),还要安装php来解析动态页面。

    主页文件后缀名为:.php .asp .jsp .pl .py .cgi

后缀不同就是开发语言不同,动态页面一般以编程语言编写 后缀不同就是开发语言不同,动态页面一般以编程语言编写 后缀不同就是开发语言不同,动态页面一般以编程语言编写

8、网站传输协议

一般分为:http超文本传输协议和https安全超文本传输协议

http监听端口默认为tcp的80端口,不进行加密传输
https监听端口默认为tcp的443端口,进行加密传输

9、HTTP协议分析

(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/Oinputoutput即上传和读取

10、常见状态返回码

200表示页面成功访问 ok
301请求的页面永久跳转了
403禁止访问该页面
404找不到该页面
500服务器内部错误
502网管错误
503当前服务不可用
504网关请求超时

二、HTTP请求报文和响应报文

(1)概述

HTTP协议是一个应用层协议,报文主要分为: 请求报文和响应报文

(2)过程

  1. 当客户端请求一个网页时,会先通过http协议将请求的内容封装在http请求报文中并且发送给服务器

  2. 服务器收到客户端的请求报文后根据报文的协议规范,进行报文解析

  3. 服务器解析完成后向客户端返回响应报文

(3)报文的结构

一般分为三个结构:

1、起始行,对报文进行描述,包括了三个部分


资源通过一组http头和呈现数据(如html文件或者图片视频等)返回给客户端

  • 请求的方法,常用的有GET、POST、HEAD等

GET: 向特定的资源发送请求,它的本质就是发送一个请求来取得服务器上的某一资源,GET请求中,永远不会包含呈现数据

POST: 向指定资源提交数据进行处理请求,例如提交表单或者上传文件。

HEAD: 向服务器索与GET请求相同的响应,只不过响应体将不会被返回

  • 请求的URL
  • 协议类型以及版本

2、头部,对报文中添加一些附加信息

3、主体,数据的主体

三、apache原理概述

1、apache概述

apache作为最早的web服务程序,它是通过http协议来提供网页浏览服务

2、apache特点

  • 模块化设置

  • 开放源代码

  • 跨平台应用

  • 支持多种web编程语言

  • 运行稳定

3、apache常见的三种工作模式

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几乎所有模式都有惊群效应

(1)MPM=prefork

prefork是多进程模式,一个进程处理一个连接,每个进程相对来说都是独立的,这个过程会用到select机制来通知

优点: 稳定、响应快

缺点: 消耗大量cpu和内存、keep-alive长连接占据问题,不适用于高并发场景

———————————————————————————————————————————————————注释——————————————————————————————————————————————————————
keep-alive长连接占据问题:即tcp连接在发送后仍然与客户端保持连接状态,客户端的浏览器可以通过相同的连接去发送请求,这样虽然节省了为每个请求建立新连接的时间、节约了带宽并且减少了重复请求的次数加快了客户端访问的速度,但是在长连接状态下,进行长连接的接口是无法和新的请求进行连接的,从而导致进程越来越多,使cpu和内存过度负载,导致服务器卡顿

原理: prefork模式的进程只能创建一个线程,所以说prefork是一个进程处理一个连接

(2)MPM=worker

worker是多进程多线程模式,一个进程创建多个线程,每个线程响应一个连接请求,但是通知机制还是select不过可以接受更多的请求

优点: 节省资源,适用于高并发场景

缺点: 兼容性不好、稳定性不好,同样具有keep-alive长连接占据问题

原理: worker模式的进程可以创建多个线程,每个线程响应一个连接请求

(3)MPM=event

event是worker的升级版,把服务器进程和响应连接请求进行了分离,基于异步I/O模型(即input和output上传读取是分开的)

I/O模型使event在连接请求过来后进程并不直接处理请求,而是交给其他机制来处理,然后通过epoll机制来确认请求是否完成。在这个过程中,进程本身一直处于空闲状态,所以一直可以接受用户的请求,从而实现一个进程响应多个连接请求。

event对于keep-alive长连接处理也有所优化,event模式有单独的线程去处理keep-alive长连接,执行完毕后才会允许长连接释放,这样增强了高并发场景下的连接请求处理能力。

优点: 支持海量级高并发负载,消耗资源少,适用于高并发场景

缺点: 对https支持的不完美

4、静态编译和动态编译

httpd是高度模块化的程序,也就是说httpd的各种功能都需要加载对应的模块来执行,但是前提是必须将使用功能的对应模块进行编译,方便httpd进行加载

  • 静态编译: 直接将模块编译到httpd的核心当中。静态编译的所有模块都会随着httpd主程序进行启动和关闭
  • 动态编译: 将模块编译好,但是不编译到httpd的核心当中。想要启动动态编译的模块,需要在httpd的配置文件中使用loadModule指令去加载使用

5、访问日志access_log详解

[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 413 17:56 index.html  #6 表示6个字节

四、安装apache

(1)实验环境

系统ip地址主机名httpd版本
Centos7.4192.168.100.202rzyhttpd-2.2.17.tar.gz

(2)实验目的

  • 客户端可以成功访问httpd服务器
  • 优化httpd服务,调整三种工作模式

(3)安装httpd服务

******(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 112 18:27 anaconda-ks.cfg
-rw-r--r--  1 root root 6597991 413 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  admin@linuxfan.cn     #这个是管理员邮箱,不用修改,这是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

发现可以正常访问

(4)优化httpd服务,调整三种工作模式

设置httpd的工作模式时,不仅要考虑网站的并发性能等工作效率,还要考虑服务器硬件cpu和内存的占用情况,内存尤为重要

-prefork工作模式

  • prefork(进程+子进程)模式,是httpd-2.2.17版本默认的工作模式
[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工作模式

  • worker(多进程+多线程)工作模式,适用于高并发场景
#注意:
想要开启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

-event工作模式

  • event是一个多进程,多线程的工作模式,解决了长连接占据问题,适用于高并发场景
[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  #重启服务

再次进行访问

就会发现以及禁止访问了,必须在后面加目录名才可以

所有的目录**

[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  #重启服务

再次进行访问

就会发现以及禁止访问了,必须在后面加目录名才可以

以上是关于Web基础的主要内容,如果未能解决你的问题,请参考以下文章

Web基础-02Http

HTML5 基础语法

「图解HTTP 笔记」Web 基础

web基础——HTTP协议

web基础知识汇总

Html5之基础-3 HTML概述基础语法文档结构