Web服务器详解与案例

本文介绍了www的概念,包括其作为全球信息广播的含义,以及它如何结合多种媒体通过HTTP协议进行信息传递。Web服务器、HTTP状态码、浏览器的工作原理也得到详细解释。此外,文章还涉及了Apache服务器的安装和配置,以及如何通过不同端口和域名访问不同网站的配置示例。
摘要由CSDN通过智能技术生成

先介绍一下理论概念

什么是www

        www是world wide web的缩写,也就是全球信息广播的意思。通常说的上网就是使用www来查询用户所需要的信息。www可以结合文字、图形、影像以及声音等多媒体,并通过可以让鼠标单击超链接的方式将信息以Internet传递到世界各处去。与其他服务器类似,当你连接上www网站,该网站肯定会提供一些数据,而你的客户端则必须要使用可以解析这些数据的软件来处理,那就是浏览器。www服务器与客户端浏览器之间的连接图。

www所使用的协议

HTTP超文本传输协议(HyperText Transfer Protocal),是互联网上最广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。它是建立在TCP上一种的无状态连接,整个基本的工作流程是客户端发送一个HTTP请求,说明客户端想要访问的资源和请求的动作,服务端收到请求之后,服务端开始处理请求,并根据请求做出相应的动作访问服务器资源,最后通过发送HTTP响应把结果返回给客户端。其中一个请求的开始到一个响应的结束称为事务,当一个事物结束后还会在服务端添加一条日志条目。

Web服务器

指网站服务器,是指驻留与因特网上某种类型计算机的程序,可以向浏览器等WEB客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个WEB服务器是Apache和Microsoft和Internet-信息服务器(Internet Information Services,IIS)unix nginx。

主要数据

服务器所提供的最主要数据是超文本标记语言(Hyper Text Markup Language,HTML)、多媒体文件(图片、影像、声音、文字等,都属于多媒体或称为超媒体),HTML只是一些纯文本数据,通过所谓的标记来规范所要显示的数据格式。

浏览器

客户端收到服务器的数据之后需要软件解析服务器所提供的数据,最后将效果呈现在用户的屏幕上。那么著名的浏览器就有内建在Windows操作系统内的IE浏览器了,还有Firefox浏览器和Google的chrome浏览器。

http请求报文

 状态码

  • 由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。
    • 1xx:指示信息 —— 表示请求已接收,继续处理
    • 2xx:成功 —— 表示请求已被成功接收、理解、接受
    • 3xx:重定向 —— 要完成请求必须进行更进一步的操作
    • 4xx:客户端错误 —— 请求有语法错误或请求无法实现
    • 5xx:服务器端错误 —— 服务器未能实现合法的请求
    • 常见状态代码、状态描述的说明如下:
      • 200 OK:客户端请求成功
      • 400 Bad Request:客户端请求有语法错误,不能被服务器所理解
      • 401 Unauthorized:请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用
      • 403 Forbidden:服务器收到请求,但是拒绝提供服务
      • 404 Not Found:请求资源不存在,举个例子:输入了错误的URL
      • 500 Internal Server Error:服务器发生不可预期的错误
      • 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常

http协议请求的工作流程

(1)终端客户在web浏览器地址栏输入访问地址http://www.ceshi.com:80/index.html

(2)web浏览器请求DNS服务器把域名www.ceshi.com解析成web服务器的IP地址

(3)web浏览器将端口号(默认是80)从访问地址(URL)中解析出来

(4)web浏览器通过解析后的ip地址及端口号与web服务器之间建立一条TCP连接

(5)建立TCP连接后,web浏览器向web服务器发送一条HTTP请求报文

(6)web服务器响应并读取浏览器的请求信息,然后返回一条HTTP响应报文。

(7)web服务器关闭HTTP连接,关闭TCP连接,web浏览器显示访问的网站内容到屏幕上。

www服务器的基本配置

首先安装好所需软件,在服务器端输入以下命令进行安装

[root@zhangyihao ~]# yum install httpd -y              //安装httpd服务

[root@zhangyihao ~]# systemctl enable httpd        //开启此服务,切记需提前关闭防火墙

配置文件

1.主要的配置文件 /etc/httpd/conf/httpd.conf。

2.额外的参数文件/etc/httpd/conf.d/*.conf。

httpd.conf的话,那么你可以将你自己的额外参数文件独立出来,例如你想要有自己的额外设置值,可以将它写入/etc/httpd/conf.d/zhuji.conf(注意,扩展名一定是.conf),而启动Apache时,这个文件就会被读入主要配置文件当中了。

3.默认的首页所在目录/var/www/html/,当输入网址时所显示的数据,就是放在这个目录当中的首页文件(默认为index.html)。

4.默认给一些可执行的CGI(网页程序)程序放置的目录/var/www/cgi-bin/,当输入网址/cgi-bin/时所显示的数据所在。

5.默认的Apache日志文件都放在/var/log/httpd/,对于流量比较大的网站来说,一个星期的日志文件的数据可以达到1GB左右

 主配置文件内容

[root@zhangyihao ~]# vim /etc/httpd/conf/httpd.conf 

31   ServerRoot "/etc/httpd"                 #http服务的顶级目录为/etc/httpd
42 Listen 80 #监听在80端口,80为web服务器的默认端口
56 Include conf.modules.d/*.conf     #包括/etc/httpd/conf.modules.d/*.conf的所有文件
66 User apache #服务的用户(ps -ef | grep httpd,先以root用户把/usr/sbin/httpd服务启动起来)。启动服务后转换的身份,在启动服务时通常以root身份,然后转换身份,这样增加系统安全
67 Group apache
86 ServerAdmin root@localhost #你的邮箱,有事的时候给你发邮件
95 #ServerName www.example.com:80    ServerName 0.0.0.0:80匹配任意IP地址,监听端口在80端口
注:默认是不需要指定的,服务器通过名字解析过程来获得自己的名字,但如果解析有问题(如反向解析不正确),或者没有DNS名字,也可以在这里指定ip地址,当这项不正确的时候服务器不能正常启动。解决办法就是启动该项把www.example.com:80修改为自己的域名或者直接修改为localhost
102 <Directory />    #目录为根,<>为起始标志,</>为结束标志
103     AllowOverride none #不允许这个目录下的访问控制文件来改变这里的配置,这也意味着不用查看这个目录下的访问控制文件。
104     Require all denied #拒绝访问根
105 </Directory>        #和<Directory />是一组标签,目录控制容器
119 DocumentRoot "/var/www/html" #网页文件存放的目录
124 <Directory "/var/www">
125     AllowOverride None
126     # Allow open access:
127     Require all granted
128 </Directory>
131 <Directory "/var/www/html">
144     Options Indexes FollowSymLinks   #索引,跟踪软链接
151     AllowOverride None
156     Require all granted
157 </Directory>
163 <IfModule dir_module> #加载一个目录模块
164     DirectoryIndex index.html
165 </IfModule>
171 <Files ".ht*"> #不能访问
172     Require all denied
173 </Files>
182 ErrorLog "logs/error_log"
189 LogLevel warn
191 <IfModule log_config_module>
#日志配置模块 /var/log/httpd,日志模块:通过时间节点去记录(man date)
196     LogFormat "%h %l %u %t \"%r\" %>s %b \"%{    Referer}i\" \"%{User-Agent}i\"" combined
197     LogFormat "%h %l %u %t \"%r\" %>s %b" com    mon
198
199     <IfModule logio_module>
201       LogFormat "%h %l %u %t \"%r\" %>s %b \"    %{Referer}i\" \"%{User-Agent}i\" %I %O" combi    nedio
202     </IfModule>
217     CustomLog "logs/access_log" combined
218 </IfModule>
220 <IfModule alias_module> #别名模块
247     ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
248
249 </IfModule>
cgi(通用网关接口)是web服务器运行时外部程序的规范,按cgi编写的程序可以扩展服务器的功能。cgi应用程序能与浏览器进行交互,还可通过数据库API与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据
255 <Directory "/var/www/cgi-bin">
256     AllowOverride None
257     Options None
258     Require all granted
259 </Directory>
261 <IfModule mime_module>    #多用途互联网邮件扩展模块
266     TypesConfig /etc/mime.types
283     AddType application/x-compress .Z
284     AddType application/x-gzip .gz .tgz
305     AddType text/html .shtml
306     AddOutputFilter INCLUDES .shtml
307 </IfModule>
mime多用途互联网邮件扩展类型,是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问时,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。 
316 AddDefaultCharset UTF-8  默认字符集
318 <IfModule mime_magic_module>
324     MIMEMagicFile conf/magic
325 </IfModule>
348 EnableSendfile on
353 IncludeOptional conf.d/*.conf

 案例: 基于同一IP的不同端口访问不同的网站(可以通过域名去访问)
                    ip+port1 -> 对应一个域名
                    ip+port2 -> 对应一个域名
           使用域名1我应该访问到 ip+port1对应的内容
           使用域名2我应该访问到 ip+port2对应的内容

1.新建两个目录文件/www/port/9090和/www/port/9091

[root@zhangyihao ~]# mkdir /www/port/{9090,9091}

2.分别写入index.html文件于目录中

[root@zhangyihao ~]# echo "This page is for port 9090" > /wwww/port/9090/index.html

[root@zhangyihao ~]# echo "This page is for port 9091" > /wwww/port/9091/index.html 

3.在/etc/httpd/conf.d/目录下创建一个myhosts.conf文件,并进行配置文件

 [root@zhangyihao ~]# vim /etc/httpd/conf.d/myhosts.conf

<Directory "/www/port">
    AllowOverride None
    Require all granted
</Directory>

Listen 192.168.188.131:9090
Listen 192.168.188.131:9091

<VirtualHost 192.168.188.131:9090>
    DocumentRoot "/www/port/9090"
    ServerName www.zhang13190.com
</VirtualHost>

<VirtualHost 192.168.188.131:9091>
    DocumentRoot "/www/port/9091"
    ServerName www.zhang13191.com
</VirtualHost>

 

配置完成后需要重启httpd服务

[root@zhangyihao ~]# systemctl restart httpd

 配置域名

在Windows下找到hosts文件并进行修改,注意此文件必须用管理员身份才可以进行修改,注意文件权限。

在文件末尾进行配置添加IP与域名的映射关系

 

 保存并退出,此时所有配置已完成

验证:

通过IP加端口号进行访问

 通过域名访问

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值