赞
踩
nginx: 是一个Web服务器,如果不是需要apache的特殊功能的话,nginx是服务器的首选。
是一个轻量级的反向代理。(两个应用是web和mail)
模块化设计
反向代理: 反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。
通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。由于外部网络上的主机并不会配置并使用这个代理服务器,普通代理服务器也被设计为在Internet上搜寻多个不确定的服务器,而不是针对Internet上多个客户机的请求访问某一个固定的服务器,因此普通的Web代理服务器不支持外部对内部网络的访问请求。
当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。此时代理服务器对外就表现为一个Web服务器,外部网络就可以简单把它当作一个标准的Web服务器而不需要特定的配置。不同之处在于,这个服务器没有保存任何网页的真实数据,所有的静态网页或者CGI程序,都保存在内部的Web服务器上。因此对反向代理服务器的攻击并不会使得网页信息遭到破坏,这样就增强了Web服务器的安全性。
keepalived+nginx:
keepalived非常轻量级的高可用实现方案,nginx是非常轻量级的反向代理。天造地设的一对。
nginx基于异步IO来实现的,基于事件驱动的加上边缘触发来完成一个线程(单线程进程)处理多个请求,面对C10K问题是一个行之有效的方案。
C10K:最初的服务器是基于进程/线程模型。新到来一个TCP连接,就需要分配一个进程。假如有C10K,就需要创建1W个进程 。
阻塞:一个进程所发出的IO请求不能得到满足的时候,必须要一直等待至内核把这个数据从IO设备复制到内核缓冲区,再从内核缓冲区复制给这个进程的地址空间以后,在这个期间,进程必须处于等待状态。
非阻塞:当进程向内核发出系统调用的之后,不等待,而是一遍一遍轮询检查内核有没有把数据准备好。
同步:发送一个数据,对方收下来并且完整存储下来之后才返回,这叫同步。(双方必须要同步时钟信号)
异步(Mysql复制):把数据发送出去,对方什么时候收下来,什么时候存储下来都不管。(双方不需要同步时钟信号)
同步阻塞:
同步非阻塞:基于事件驱动的IO(event-driven)
异步阻塞:IO复用
异步非阻塞:aio
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
以下是具体一些分析
HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
1.支持客户/服务器模式。(C/S模式)
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快
第一步:建立TCP/IP连接,客户端与服务器通过Socket三次握手进行连接
第二步:客户端向服务端发起HTTP请求(例如:POST/login.html http/1.1)
第三步:客户端发送请求头信息,请求内容,最后会发送一空白行,标示客户端请求完毕
第四步:服务器做出应答,表示对于客户端请求的应答,例如:HTTP/1.1 200 OK
第五步:服务器向客户端发送应答头信息
第六步:服务器向客户端发送请求头信息后,也会发送一空白行,标示应答头信息发送完毕,接着就以Content-type要求的数据格式发送数据给客户端
第七步:服务端关闭TCP连接,如果服务器或者客户端增Connection:keep-alive就表示客户端与服务器端继续保存连接,在下次请求时可以继续使用这次的连接
HTTPS是HTTP协议的修改,它加密数据并确保其机密性。其配置可保护用户在与网站交互时免于窃取个人信息和计费数据。
1、优点
相比于http,https可以提供更加优质保密的信息,保证了用户数据的安全性,此外https同时也一定程度上保护了服务端,使用恶意攻击和伪装数据的成本大大提高。
2、缺点
缺点也同样很明显,第一https的技术门槛较高,多数个人或者私人网站难以支撑,CA机构颁发的证书都是需要年费的,此外对接Https协议也需要额外的技术支持;其二,目前来说大多数网站并不关心数据的安全性和保密性,其https最大的优点对它来说并不适用;
其三,https加重了服务端的负担,相比于http其需要更多的资源来支撑,同时也降低了用户的访问速度;
第四,目前来说Http网站仍然大规模使用,在浏览器侧也没有特别大的差别,很多用户不关心的话根本不感知。
第一步:客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。
第二步:Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
第三步:客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
第四步:客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
第五步:Web服务器利用自己的私钥解密出会话密钥。
第六步:Web服务器利用会话密钥加密与客户端之间的通信。
最后说一句 ,ssl证书阿里云上可以免费申请一年
基于域名和IP和端口的虚拟主机;
keep—alived(长连接)和pipelined连接支持;
重新加载配置以及在线升级时,不需要终端正在处理的请求(有一个主进程生成很多的子进程,子进程有worker等,新连接使用新配置,老旧的连接先使用旧连接,当老连接慢慢退出以后,在建立新连接);(热部署/平滑升级)
带缓存的日志写操作;
3xx~5xx错误代码重定向;
重写模块,使用正则表达式改变URI;
根据客户端地址执行不同功能(不光时地址,也可以是浏览器类型)
支持FLV流和MP4流;(边下载边播放)
一个主进程和多个工作进程,工作进程以非特权用户进行(一个master进程产生多个worker进程,master以管理员身份启动(master负责分析配置文件是否有错误,有错误也不会影响worker进程,只是master会告诉你有错误,需要重新装载,然后就是新用新的,旧用旧的)(监控80端口,只有管理员才能启用小于1024的端口),worker进程由master进程以普通用户身份生成,master主要是监控worker进程是不是够数目以及运行是否正常)(每个worker进程内部还有许多模块,用到那个模块,调用哪个模块)(除了最核心的功能之外,其他的都以模块的方式运行,这些模块以流水线的方式在工作)
如果负载以CPU密集型应用为主,如SSL或者压缩应用,则worker数应和cpu数相同,若负载以IO密集型为主,如相应大量内容给客户端,则worker进程应为cpu个数的1.5~2倍。
支持事件驱动机制:kqueue(freeBSD 4.1+)、epoll(Linux2.6+)、/dev/poll(这三种是支持事件驱动的IO框架,nginx都支持)如果不支持epoll,则选择select或者poll。
支持sendfile和sendfile 64:内核不需要将从磁盘中调用的文件复制给用户空间进行封装,用户空间封装完成之后在复制给内核,而是直接代替用户空间进行封装,然后直接转发给网卡。
10000个非活跃的HTTP keep-alive连接仅占用2.5M内存
尽可能避免数据拷贝操作(sendfile)
main:核心配置
http:只对web服务器有效
server:
location:定义虚拟主机
upstream:只有在定义反向代理的时候才能用到
mail:只对mail服务器有效
server{}:虚拟主机(两个虚拟主机监听同一个地址,同一个端口,但是server_name不同,这就是基于名称的虚拟主机)
location{}:nginx结合以下两种功能。
httpd:
<DocumentRoot " ">
:基于本地文件系统路径来定义访问属性
<Location “/bbs”>
:基于URI路径来定义访问属性
URI:www.baidu.com**/URI**
URL的一般格式为(带方括号[]的为可选项):
protocol : // hostname [:port ] / path /
URL的格式由三部分组成:
①第一部分是协议(或称为服务方式)。
②第二部分是存有该资源的主机IP地址(有时也包括端口号)。
③第三部分是主机资源的具体地址,如目录和文件名等。
第一部分和第二部分用“
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。