http协议与Apache

1、http协议

0、监听(扩展)

yum install nc
#双端安装

nc -l 80
#服务器监听80端口

nc 192.168.64.100 80
#客户端访问80端口

1、http概念

互联网:是网络的网络,是所有类型网络的母集

因特网:世界上最大的互联网网络

万维网(www):是一个大规模的、联机式的信息贮藏库

URL:是万维网使用的统一资源定位符,用于来标志万维网上的各种文档

HTTP 超文本传送协议应用层协议,使用TCP传输层协议进行可靠的传送

HTML: 通过使用超文本标记语言,使万维网页面设计者可以很方便地用链接从页面的某处链接到因特网的任何一个万维网页面,访问者点击链接即可快速访问另一个网站

2、http访问过程

1、建立连接

接收拒绝连接请求

2、接受请求

接收客户端请求报文中对某资源的一次请求的过程(常用多进程I/O模型复用的多进程I/O模型

  • 单进程I/O模型:启动一个进程处理用户请求,而且一次只处理一个,多个请求被串行响应

  • 多进程I/O模型并行启动多个进程,每个进程响应一个连接请求

  • 复用I/O结构:启动一个进程同时响应N个连接请求

  • 复用的多进程I/O模型:启动M个进程每个进程响应N个连接请求同时接收M*N个请求

3、处理请求

服务器对请求报文进行解析,并获取请求的资源请求方法等相关信息,根据方法,资源,首部和可选的主体部分对请求进行处理

4、访问资源

服务器获取请求报文中请求的资源web服务器,即存放了web资源的服务器,负责向请求者提供对方请求的静态资源,或动态运行后生成的资源

(资源可以分为静态和动态资源区别静态和动态资源:看源代码,静态资源就是文件,动态资源需要占用cpu内存 )

5、构建响应报文

一旦Web服务器识别,就执行请求方法中描述的动作,并返回响应报文,响应报文中包含有响应状态码、响应首部,如果生成了响应主体的话,还会包含响应主体

wed语言:html,css,js

mime类型:将文件格式写入mime配置文件中,当你网页访问文件时,如果该文件的格式存在于mime配置文件中,就在网页上显示,如果不存在,则进行下载(配置文件 /etc/mime.types

URI 重定向:分为 URL URN      URN:提供文件名称(比如p2p下载磁力链接)

                                        URL:提供文件位置

6、发送响应报文

在响应报文构建完成后进行发送,当发送完成后,服务器会断开该链接,防止资源被占用,若该连接为持久连接,则保持连接,并根据content-length头部,分辨什么时候断开连接

7、记录日志

当事务结束时,Web服务器会在日志文件中添加一个条目,来描述已执行的事务

3、报文结构

http 版本和其功能

  • 0.9 只能下载
  • 1.0 可以上传也可以下载
  • 1.1 支持长连接(默认长连接)

http 协议:stateless 无状态(默认),不知道你是谁,无法持续追踪访问者来源

解决 http 协议无状态方法

  • cookie   客户端存放

  • session 服务端存放 

http 事务:一次访问的过程

  • 请求:request

  • 响应:response

1、请求报文

方法:这个报文的目的

URL:指明这个文件的具体位置

2、响应报文

2、配置

rpm -qc httpd

主配置文件:/etc/httpd/conf/httpd.conf

子配置文件:/etc/httpd/

查看配置文件格式是否有错:httpd -t

隐藏服务器版本信息:

持久连接:默认开启,关闭后,下载一个直接关闭连接

虚拟机:

  • 基于ip:为每个虚拟主机准备至少一个ip地址

  • 基于port:为每个虚拟主机使用至少一个独立的port

  • 基于FQDN:为每个虚拟主机使用至少一个FQDN,请求报文中首部 Host:www.kgc.com

基于ip
vim /etc/httpd/conf.d/test.conf

<VirtualHost 192.168.64.100:80>
    ServerAdmin support@jfedu.net
    DocumentRoot "/var/www/html/accp"
    ServerName www.accp.com
    ErrorLog "logs/www.accp.com_error_log"
    CustomLog "logs/www.accp.com_access_log" common
</VirtualHost>



<VirtualHost 192.168.64.200:80>
    ServerAdmin support@jfedu.net
    DocumentRoot "/var/www/html/accp"
    ServerName www.accp.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/www.accp.com_error_log"
    CustomLog "logs/www.accp.com_access_log" common
</VirtualHost>


<Directory "/var/www">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>

vim /etc/httpd/conf/httpd.conf
Listen 192.168.64.100:80
Listen 192.168.64.200:80
基于端口
vim /etc/httpd/conf.d/test.conf 

<VirtualHost 192.168.64.100:80>
    ServerAdmin support@jfedu.net
    DocumentRoot "/var/www/html/acp"
    ServerName www.acp.com
    ErrorLog "logs/www.acp.com_error_log"
    CustomLog "logs/www.acp.com_access_log" common
</VirtualHost>



<VirtualHost 192.168.64.200:8080>
    ServerAdmin support@jfedu.net
    DocumentRoot "/var/www/html/acp"
    ServerName www.acp.com
    ServerAlias www.dumy-host.example.com
    ErrorLog "logs/www.acp.com_error_log"
    CustomLog "logs/www.acp.com_access_log" common
</VirtualHost>


<Directory "/var/www">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>

vim /etc/httpd/conf/httpd.conf

Listen 192.168.64.100:80
Listen 192.168.64.200:80
基于域名
vim /etc/httpd/conf.d/test.conf

<VirtualHost 192.168.64.100:80>
    ServerAdmin support@jfedu.net
    DocumentRoot "/var/www/html/kc"
    ServerName www.kc.com
    ErrorLog "logs/www.kc.com_error_log"
    CustomLog "logs/www.kc.com_access_log" common
</VirtualHost>



<VirtualHost 192.168.64.200:80>
    ServerAdmin support@jfedu.net
    DocumentRoot "/var/www/html/accp"
    ServerName www.accp.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/www.accp.com_error_log"
    CustomLog "logs/www.accp.com_access_log" common
</VirtualHost>


<Directory "/var/www">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>

mkdir -p /var/www/html/kc

mkdir -p /var/www/html/accp

echo "<h1>www.kc.com</h1>" /var/www/html/kc/index.html

echo "<h1>www.accp.com</h1>" /var/www/html/accp/index.html

3、cookie session

场景需要状态:购物、会话等

用cookie session让http保持状态

cookie:在请求和响应报文中写入cookie信息

session:把cookie信息留在本地,用session提取其中的信息传给web

cookie缺点:

1、使用cookie来传递信息,随着cookie个数的增多和访问量的增加,它占用的网络带宽也很大,试想假如cookie占用200字节,如果一天的PV有几个亿,那么它要占用多少带宽?

2、cookie并不安全,因为cookie是存放在客户端的,所以这些cookie可以被访问到,设置可以通过插件添加、修改cookie。所以从这个角度来说,我们要使用sesssion,session是将数据保存在服务端的,只是通过cookie传递一个sessionId而已,所以session更适合存储用户隐私和重要的数据

session 缺点:

1、不容易在多台服务器之间共享,可以使用session绑定,session复制,session共享解决

2、session存放在服务器中,所以session如果太多会非常消耗服务器的性能cookie和session各有优缺点,在大型互联网系统中,单独使用cookie和session都是不可行的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值