WEB/HTTP服务器搭建[通俗易懂]

WEB/HTTP服务器搭建[通俗易懂]HTTP对于软件都有服务和客户,有服务端和客户端服务就是在操作系统运行一个或者多个程序,并为客户端提供相应所需的服务协议就是计算机网络中进行数据交换而建立的规则、标准或约定的集合。只有遵守这个约定,计算机之间才能相互通信交流。它的三要素是:语法、语义、时序。1.WEB服务器web服务器一般指网站服务器,他是一个驻留于Internet的一个计算机程序,用于向浏览器提供文档…

大家好,又见面了,我是你们的朋友全栈君。

HTTP

对于软件都有服务和客户,有服务端和客户端

服务

就是在操作系统运行一个或者多个程序,并为客户端提供相应所需的服务

协议

就是计算机网络中进行数据交换而建立的规则、标准或约定的集合。只有遵守这个约定,计算机之间才能相互通信交流。它的三要素是:语法、语义、时序。

1.WEB服务器

web服务器一般指网站服务器,他是一个驻留于Internet的一个计算机程序,用于向浏览器提供文档,网站等信息,也可以在其中放置各种文档数据供世界下载,当然也可以放置文档供世界浏览。

1.1 WWW

环球信息网,又名“万维网”,其可分为Web客户端和Web服务器程序。可以让客户端(常用浏览器)访问浏览Web服务器上的页面。由许多互相链接的超文本组成,通过互联网互相访问。

Internet提供的主要服务有万维网WWW)、文件传输FTP)、电子邮件(E-mail)、远程登录Telnet)、手机 (3GHZ) 等。

1.2 Http

(HyperText Transfer Protocal)超文本传输协议,是互联网上最广泛的一种网络协议,所有的www文件都必须遵守这个标准。

它使得浏览器的传输访问更高效,使网络传输减少。

WEB/HTTP服务器搭建[通俗易懂]

1.3 网页、网页文件和网站

网页是网站的基本信息单位,是组成WWW的基本文档。由文字、图片、动画、声音等多种媒体信息以及链接组成,用HTML编写,通过链接实现与其他网页或网站的关联和跳转。

网页文件是用HTML(标准通用标记语言下的一个应用)编写的,在WWW上传输,能被浏览器识别显示的文本文件。其扩展名是.htm.html

网站由众多不同内容的网页构成,网页的内容可体现网站的全部功能。通常把进入网站首先看到的网页称为首页或主页(homepage)

1.4 apache

是一种当今流行的linux Web服务器,起初由Illinois大学Urbana-Champaign的国家高级计算程序中心开发,后来Apache被开放源代码团体的成员不断地发展和加强。

1.5网站架构lamp    

lamp=Linux+apache+mysql+php\python\jsp\perl

静态网页:html

动态网页 : 和后台数据库实现一些交互  php jsp python perl …

本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,该软件开发的项目在软件方面的投资成本较低,70%以上的访问流量是LAMP来提供的,LAMP是最强大的网站解决方案。

访问标准:通过访问ip地址及端口号访问服务器               

2.HTTP协议运行原理

WEB/HTTP服务器搭建[通俗易懂]WEB/HTTP服务器搭建[通俗易懂]

WEB/HTTP服务器搭建[通俗易懂]

WEB/HTTP服务器搭建[通俗易懂]

WEB/HTTP服务器搭建[通俗易懂]

WEB/HTTP服务器搭建[通俗易懂]

HTTP报文结构

请求报文由请求行,请求头部,空行和请求数据组成

如下图

WEB/HTTP服务器搭建[通俗易懂]

1).请求行

请求行分为三个部分:请求方法、请求地址和协议版本

请求方法

WEB/HTTP服务器搭建[通俗易懂]

WEB/HTTP服务器搭建[通俗易懂]

请求地址

URL:统一资源定位符,是一种自愿位置的抽象唯一识别方法。

端口和路径有时可以省略(HTTP默认端口号是80)

如下例:

WEB/HTTP服务器搭建[通俗易懂]

协议版本

协议版本的格式为:HTTP/主版本号.次版本号,常用的有HTTP/1.0和HTTP/1.1

2).请求头部

请求头部为请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔。

WEB/HTTP服务器搭建[通俗易懂]

请求头部的最后会有一个空行,表示请求头部结束,接下来为请求数据,这一行非常重要,必不可少。

3).请求数据

可选部分,比如GET请求就没有请求数据。

下面是一个POST方法的请求报文:

POST  /index.php HTTP/1.1    请求行

Host: localhost

User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2  请求头

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8

Accept-Language: zh-cn,zh;q=0.5

Accept-Encoding: gzip, deflate

Connection: keep-alive

Referer: http://localhost/

Content-Length:25

Content-Type:application/x-www-form-urlencoded

  空行

username=aa&password=1234  请求数据

HTTP响应 

WEB/HTTP服务器搭建[通俗易懂]

WEB/HTTP服务器搭建[通俗易懂]

代理服务器: S和C之间的访问实体        

缓存服务器: 特殊的代理服务器

网关服务器: 一个http/FTP网关服务器C—http — 8080 (FTP<–>HTTP )—–S FTP

                       <源ip地址><源端口号> <目标ip地址><端口> 

HTTP关键字段

UA字段

WEB/HTTP服务器搭建[通俗易懂]

SERVER字段

WEB/HTTP服务器搭建[通俗易懂]

Referer字段

WEB/HTTP服务器搭建[通俗易懂]

HTTP重定向

WEB/HTTP服务器搭建[通俗易懂]

Session

Session是可以存储针对于某一个用户的浏览器以及通过其当前窗口打开的任何窗口具有针对性的用户信息存储机制。 通常大家认为,只要关闭浏览器,session就消失,其实这是错误的理解。对session来说也是一样的,除非程序通知服务器删除一个session,否则服务器会一直保留。由于关闭浏览器不会导致session被删除,迫使服务器为seesion设置了一个失效时间,当距离客户端上一次使用session的时间超过这个失效时间时,服务器就可以认为客户端已经停止了活动,才会把session删除以节省存储空间.

(1)第一次访问某个web站点资源时,客户端提交没有带SessionID的请求(请求报文头没有Cookie头域信息)。  而web服务器会检查是否有SessionID过来,没有则创建SessionID,并根据web程序自身定义在请求哪个资源时添加属于当前会话的信息(也可为空),这个信息列表以SessionID作为标识。然后将SessionID返回给客户端(通过响应报文头的Set-Cookie头域)。 (2 )客户端再次访问同个web站点时,提交带有SessionID的请求(通过Cookie头域存储SessionID)。由服务端判断session是否失效,如果未失效,可查询属于当前会话的信息列表。如果失效,则创建新的session(产生新的SessionID),而原先的session(包含session带的信息列表)则丢失,无法访问。

WEB/HTTP服务器搭建[通俗易懂]

Cookie

Cookie 保存SessionID的方式可以采用Cookie,这样在交互过程中浏览器可以自动的按照规则把这个SessionID发回给服务器。Cookie的命名方式类似于SessionID。有时Cookie被人为的禁止,所以出现了其他机制以便在Cookie被禁止时仍然能够把SessionID传递回服务器。这种技术叫做URL重写,就是把SessionID直接附加在URL路径的后面,附加方式也有两种,一种是作为URL路径的附加信息,表现形式为http://www.wantsoft.com/index.asp;jsessionid= ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764 。 另一种是作为查询字符串附加在URL后面,表现形式为http://www.wantsoft.com/index?js … 99zWpBng!-145788764 。

软件安装

[root@imoemoe ~]# yum install httpd                  安装http服务器

[root@imoemoe ~]# systemctl stop firewalld       关闭防火墙

[root@imoemoe ~]# setenforce 0                        关闭selinux防火墙

[root@imoemoe ~]# mkdir /{xixi,haha}                创建文件夹

[root@imoemoe ~]# mkdir /usr/local/hehe          创建虚拟目录文件夹

[root@imoemoe ~]# mkdir /xixi/100                    创建用户名登陆的虚拟目录

[root@imoemoe ~]# echo ‘嘻嘻’ > /xiaopang/100/index.html

[root@imoemoe ~]# echo ‘我是嘻嘻’ > /xiaopang/index.html

[root@imoemoe ~]# echo ‘哈哈’ > /dapang/index.html

[root@imoemoe ~]# echo ‘虚拟目录’ > /usr/local/hehe/index.html

vim /etc/httpd/conf.d/httpd.conf                        ——编写主配置文件

ServerName 0.0.0.0:80 

vim /etc/httpd/conf.d/vhosts.conf                      ——编写辅助配置文件

<Directory /xixi>                                ——设置xixi目录

        AllowOverride none                  ——允许覆盖

        Require all granted                   ——设置访问目录权限

</Directory>

<Directory /haha>                             ——设置haha目录

        AllowOverride none

        Require all granted

</Directory>

<Directory /usr/local/hehe>               ——设置hehe目录

        AllowOverride none

        Require all granted

</Directory>

Listen 10000    ——监听10000端口

<VirtualHost 192.168.10.100:80>   端口号必须写

        DocumentRoot /xixi/100           ——指定当前主机访问网站根目录

        ServerName 192.168.10.100   ——指定访问网站名称

</VirtualHost>

<VirtualHost 192.168.10.100:80>       

        DocumentRoot /xixi

        ServerName www.xixix.com                             ——基于域名寻址

        ErrorLog “/var/log/httpd/dummy-host2.example.com-error_log”                               ——错误日志

        CustomLog “/var/log/httpd/dummy-host2.example.com-access_log” common        ——访问日志

</VirtualHost>

<VirtualHost 192.168.10.100:80>

        DocumentRoot /haha

        ServerName www.haha.com

        Alias /hehe /usr/local/hehe

        ErrorLog “/var/log/httpd/dummy-host2.example.com-error_log”

        CustomLog “/var/log/httpd/dummy-host2.example.com-access_log” common

</VirtualHost>

<VirtualHost *>   ——如想表示所有主机则使用 * 号

[root@imoemoe ~]# systemctl restart httpd

[root@imoemoe ~]# vim /etc/hosts

   192.168.10.100  www.xixi.com

   192.168.10.100 www.haha.com

[root@imoemoe ~]# curl http://192.168.10.100

嘻嘻

[root@imoemoe ~]# curl http://www.haha.com

哈哈

[root@imoemoe ~]# curl http://www.haha.com/hehe/

虚拟目录

[root@imoemoe ~]# curl http://www.xixi.com

我是嘻嘻

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/140369.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Java实现数组反转

    Java实现数组反转Java实现数组反转实现思路:(1)初始化数组(2)定义方法实现反转数组(3)定义方法遍历数组(4)调用方法//数组反转publicclassArrayReverse{publicstaticvoidmain(String[]args){int[]arr={68,27,95,88,171,996,51,210};//数组例子,自行设置reverse(arr);printArray(arr);}

  • Django(23)Django限制请求装饰器

    Django(23)Django限制请求装饰器前言有时候,我们想要限制访问的请求方法,比如我们希望用户只能通过get方式请求,post不允许,那么我们可以采用装饰器的方式,django已经为我们提供了内置的装饰器限制请求装饰器Django内

  • Ren命令_linux基础命令

    Ren命令_linux基础命令功能说明:调整程序优先级。语  法:renice[优先等级][-g…][-p…][-u…]补充说明:renice指令可重新调整程序执行的优先权等级。预设是以程序识别码指定程序调整其优先权,您亦可以指定程序群组或用户名称调整优先权等级,并修改所有隶属于该程序群组或用户的程序的优先权。等级范围从-20–19,只有系统管理者可以改变其他用户程序的优先权,也仅有系统管理者可以设置负数…

    2022年10月23日
  • 《JavaScript 模式》读书笔记(6)— 代码复用模式1

    我们有开始进入新篇章了。这篇内容主要讲代码复用模式,实际上代码复用,就是继承啊,原型啊,构造函数啊等等这一类的内容。对于前端进阶来说,是很重要的基础知识。这一篇内容会对原型、继承有很深入的讲解。我也

  • MSSQL 的QUOTENAME函数「建议收藏」

    MSSQL 的QUOTENAME函数「建议收藏」–功能:返回带有分隔符的Unicode字符串,分隔符的加入可使输入的字符串成为有效的MSSQL分隔标识符。–语法QUOTENAME(‘character_string'[,’quote_character’]) –SQL语句中的字段名,表名为关键字时,用QUOTENAME添加有效分隔符() –在动态查询中,对表名参数QUOTENAME处理,避免表名为

  • mfc循环后界面卡死_undefined reference to printf

    mfc循环后界面卡死_undefined reference to printf使用EnterCriticalSection时卡死问题产生原因:如下代码,在已经进入临界区时,再次进入其他临界区,会导致软件卡死EnterCriticalSection(&cs0);//进入临界区EnterCriticalSection(&cs1);//进入临界区LeaveCriticalSection(&cs1);//离开临界区

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号