zoukankan      html  css  js  c++  java
  • httpd与web服务初始

    一、HTTP请求方法

    在HTTP请求报文中的方法(Method),是对所请求对象所进行的操作,也就是一些命令。请求报文中的操作有:
    
    方法(Method) 含义
    GET 请求读取一个Web页面
    POST 上传一个资源(如Web页面)
    DELETE 删除Web页面
    CONNECT 用于代理服务器
    HEAD 请求读取一个Web页面的头部
    PUT 请求存储一个Web页面
    TRACE 用于测试,要求服务器送回收到的请求
    OPTION 查询特定选项

    二、HTTP响应方法

    状态码(status-code)是响应报文状态行中包含的一个3位数字,指明特定的请求是否被满足,
    如果没有满足,原因是什么。状态码分为以下五类:
    
    状态码 含义
    200 成功
    301 永久重定向(跳转)
    302 临时重定向(跳转)
    304 本地缓存
    307 内部重定向(跳转)
    400 客户端错误
    401 认证失败
    403 找不到主页,权限不足
    404 找不到页面
    500 内部错误
    502 找不到后端主机
    503 服务器过载
    504 后端主机超时

    三、请求头部信息

    四、HTTP总结

    1.原理

    1.用户输入域名 - > 浏览器跳转 - > 浏览器缓存 - > Hosts文件 - > DNS解析(递归查询|迭代查询)
        客户端向服务端发起查询 - > 递归查询
        服务端向服务端发起查询 - > 迭代查询
    2.由浏览器向服务器发起TCP连接(三0次握手)
        客户端     -->请求包连接 -syn=1 seq=x           服务端
        服务端     -->响应客户端 syn=1 ack=x+1 seq=y     客户端
        客户端     -->建立连接 ack=y+1 seq=x+1          服务端
    3.客户端发起http请求:
        1)请求的方法是什么:     GET获取
        2)请求的Host主机是:     blog.driverzeng.com
        3)请求的资源是什么:     /index.html
        4)请求的端口是什么:     默认http是80 https是443
        5)请求携带的参数是什么:   属性(请求类型、压缩、认证、浏览器信息、等等)
        6)请求最后的空行
    4.服务端响应的内容是
        1)服务端响应使用WEB服务软件
        2)服务端响应请求文件类型
        3)服务端响应请求的文件是否进行压缩
        4)服务端响应请求的主机是否进行长连接
    5.客户端向服务端发起TCP断开(四次挥手)
        客户端     --> 断开请求 fin=1 seq=x          -->    服务端
        服务端     --> 响应断开 fin=1 ack=x+1 seq=y  -->    客户端
        服务端     --> 断开连接 fin=1 ack=x+1 seq=z  -->    客户端
        客户端     --> 确认断开 fin=1 ack=x+1 seq=sj -->    服务端
    

    2.HTTP协议

    http1.0:短连接,一次TCP连接,仅发起一次请求
    http1.1:长连接,一次TCP连接,发起多次请求
    http2.0:HTTPS用
    http3.0
    

    3.用户访问集群架构的流程

    1.客户端发起http请求,请求会先抵达前端的防火墙
    2.防火墙识别用户身份,正常的请求通过内部交换机通过tcp连接后端的负载均衡,传递用户的http请求
    3.负载接收到请求,会根据请求的内容进行下发任务,通过tcp连接后端的web,转发发用户的http请求
    4.web接收到用户的http请求后,会根据用户请求的内容进行解析,解析分为如下:
        静态请求:web直接返回给负载均衡->防火墙->用户
        动态请求:web向后端的动态程序建立TCP连接,将用户的动态http请求传递至动态程序->由动态程序进行解析
    5.动态程序在解析的过程中,如果碰到查询数据库请求,则优先与缓存建立tcp连接,并发起数据查询操作。
    6.如果缓存没有对应的数据,动态程序再次向数据库建立tcp连接,并发起查询操作。
    7.最后数据由, 数据库->动态程序->缓存->web服务->负载均衡->防火墙->用户。
    

    五、http相关术语

    1.PV、UV、IP

    假设公司有一座大厦,大厦有100人,每个人有一台电脑和一部手机,上网都是通过nat转换出口,
    每个人点击网站2次, 请问对应的pv,uv,ip分别是多少?
    
    PV : 页面独立浏览量
    UV : 独立设备
    IP : 独立IP
     
    那么上面的题:
    PV: 100*2*2 = 400
    UV: 100*2 = 200
    IP: 1
    
    日PV千万量级并不大
    

    2.SOA松耦合架构

    面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,
    并通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,
    它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以
    一种统一和通用的方式进行交互。
    
    #一个电商公司,他的网站页面功能会有很多
        注册
        登录
        首页
        详情页
        购物车
        价格标签
        留言
        客服
        支付中心
        物流
        仓储信息
        订单相信
        图片
    

    Nginx Web基础

    一、nginx介绍

    1.nginx概述

    Nginx是一个开源且高性能、可靠的Http Web服务、代理服务。
    开源: 直接获取源代码
    高性能: 支持海量并发
    可靠: 服务稳定
    
    

    2.nginx特点

    1)高性能高并发

    性能高,支持海量并发,当并发特别高的时候,nginx比其他的web服务响应速度快
    
    

    2)轻量且高扩展性

    1.功能模块多,但仅需要保留必要的模块
    2.需要哪个模块添加哪个模块,可以兼容第三方模块
    
    

    3)高可靠性

    很多web服务跑一段事件后需要重启,nginx不需要
    nginx支持宕机时间级别为 9999、99999
    
    

    4)支持热部署

    nginx可以在开机情况下进行升级和重启
    
    

    5)互联网公司使用nginx

    nginx技术成熟,可以做负载,安全,web,缓存
    
    

    6)nginx支持epool网络模型

    1.epool:当用户发起请求,直接对请求的内容进行处理
    2.select:当用户发起请求,先遍历扫描数据,然后对请求的内容进行处理
    
    Select: 当用户发起一次请求,select模型就会进行一次遍历扫描,从而导致性能低下。
    Epool: 当用户发起请求,epool模型会直接进行处理,效率高效,并无连接限制。
    
    

    3.其他的web服务

    1.apache:最早使用的web服务,难以掌握,性能不高
    2.nginx
    	1)Tengine:淘宝根据nginx进一步开发得到的服务
    	2)openresty:是一个基于 Nginx 与 Lua 的高性能 Web 平台
    3.lighttpd:消耗的内存和cpu较低
    4.IIS:windows的web服务
    5.GWS:Google web server
    6.BWS:baidu web server
    
    

    二、nginx应用场景

    三、nginx安装

    1.epol源安装

    [root@web01 ~]# yum install -y nginx
    
    

    2.官方源安装

    1)配置官方源

    [root@web02 ~]# vim /etc/yum.repos.d/nginx.repo
    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/7/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    
    

    2)安装依赖

    [root@web02 ~]# yum install -y gcc gcc-c++ autoconf pcre pcre-devel make automake wget httpd-tools vim tree
    
    

    3)安装nginx

    [root@web02 ~]# yum install -y nginx
    
    

    4)启动服务

    [root@web02 ~]# systemctl start nginx
    #或者
    [root@web02 ~]# nginx
    
    

    5)检验启动

    #方式一:
    	[root@web02 ~]# ps -ef | grep nginx
    #方式二:
    	[root@web02 ~]# netstat -lntp | grep 80
    #方式三:
    	访问页面 10.0.0.8:80
    #方式四:
        #查看版本
        [root@web02 ~]# nginx -v
        #查看安装模块
        [root@web02 ~]# nginx -V
    
    

    6)nginx常用命令

    1.启动命令
    [root@web02 ~]# systemctl start nginx
    #或者
    [root@web02 ~]# nginx
    
    #注意,使用哪种方式启动就用哪种方式关闭
    2.关闭命令
    [root@web02 ~]# systemctl stop nginx
    #或者
    [root@web02 ~]# nginx -s stop
    
    3.nginx重启
    [root@web02 ~]# systemctl restart nginx
    
    4.nginx重载配置文件
    [root@web02 ~]# systemctl reload nginx
    #或者
    [root@web02 ~]# nginx -s reload
    
    5.检查nginx配置
    [root@web01 ~]# nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    
    6.加入开机自启
    [root@web01 ~]# systemctl enable nginx
    Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
    
    7.CentOS6操作
    #启动
    [root@web01 ~]# nginx
    [root@web01 ~]# /etc/init.d/nginx start
    [root@web01 ~]# service nginx start
    #配置开机自启
    [root@web01 ~]# chkconfig nginx on
    
    

    3.源码包安装

    作业:

    1.使用两种方式安装方式安装nginx
    2.搭建交作业页面
    

  • 相关阅读:
    qt中使用dll库的方法
    41. wait notify 方法
    40.方式二的练习
    39.线程的实现方式二
    38. 死锁
    37. 解决线程问题方式二(同步函数)
    36. 解决线程问题方式一(同步代码块synchronized)
    35.线程问题
    34. Thread类的常用方法
    33. 自定义线程
  • 原文地址:https://www.cnblogs.com/xiaolang666/p/13531099.html
Copyright © 2011-2022 走看看