Nginx基础之http、https、socket 、SSL及TCP简单关系

简介:

 nginx是比较流行的轻量级的web服务器,但在实际的应用中基本是利用其upstream模块来作为web的反向代理和负载均衡;当然nginx也可以作为mail的反向代理,这个情况比较少,主要还是web代理,谈到web基本上逃不过http\https\SSL\TCP这四个协议。

  理解http\https\SSL\TCP这四个协议之间的关系有助于后期对nginx的安装、配置和优化。


一、HTTP协议

  HTTP协议定义了web客户端如何从web服务器上请求web页面,以及服务如何把web页面传输给web客户端。目前http是协议发展到http 1.1 版本(RFC2616),它与旧版http 1.0版本(RFC 1945)相互兼容。


HTTP流程基本原理:

(1)HTTP请求:web浏览器先向本地的socket发送HTTP请求,socket使用TCP向web服务器请求连接,经过TCP三次握手后将请求发送到服务器的socket,服务器的socket将请求信息发送给web服务器应用。

(2)HTTP响应:web服务器接到请求后将结果信息传送到服务器本地的socket,服务器本地socket通过TCP将结果信息传送给web客户端本地的socket,最终web客户端的socket将信息传递给web浏览器。


HTTP有一个重要的特征是无状态协议,意味着每一次请求都会执行一次上述的流程,在少量请求的情况下,用户不会感知响应速度,但是一旦大量并发,有可能性能就下降加快,根据上述的流程我们可以考虑从以下四点进行优化:

(1)TCP是一个有拥塞控制机制的,在建立连接初期会以慢速传送,一旦确定网络不拥塞才会上升一个较快的速度进行传送,这个过程称之为TCP慢启动。所以考虑调整TCP相关的参数。

(2)根据情况考虑选择HTTP持久连接或者HTTP非持久连接。非持续连接每一次访问都会执行一次流程,适合少量访问的站点。持续连接是一个客户端一旦和服务器连接,后续的访问可利用这次连接可快速访问,无需再经历一次慢启动,当服务器端在一定的时间内不再接到同一客户端的访问时,断开连接;

上述的两点有个具体的例子,可以参考http://h2ofly.blog.51cto.com/6834926/1616306

(3)压缩传送的信息量。这个需要web服务器内是否设置动静态压缩;

(4)是否需要本地的缓存代理;


二、HTTPS协议

  HTTPS协议简单一点就是HTTP+SSL(Secure Socket Layer),SSL协议栈如下:

HTTP
SSL
TCP
IP

https流程基本原理:

(1)客户端向服务器发起会话,协商传送加密算法;服务器向客户端发送服务器数字证书。客户端想证书颁发机构证实证书的有效性,并用查询到的服务器证书的公钥加密建立加密会话的密钥后发送过服务器;服务器接到加密的密钥后,用私钥解密得到密钥;

(2)利用(1)中得到的密钥,将每次的HTTP请求信息和请求结果进行加密传输;


三、HTTP响应码

1xx:指示信息,表示请求已接收,继续处理;

2xx:成功,表示请求已被成功接收;

3xx:重定向,表示完成请求必须进行更进一步的操作;

4xx: 客户端错误,请求有语法错误或者请求无法实现;

5xx:服务器端错误,服务器未能实现合法的请求;


四、参考文章

Apache\Nginx\Lighttpd之间的对比:

http://www.blogjava.net/daniel-tu/archive/2008/12/29/248883.html





本文转自 bannerpei 51CTO博客,原文链接:http://blog.51cto.com/281816327/1619556,如需转载请自行联系原作者

相关文章
|
5天前
|
缓存 安全 网络协议
HTTP和HTTPS的区别有哪些?
本文简要总结了 HTTP 和 HTTPS 的区别,从概念、端口、连接方式、使用场景、安全性等多个角度进行了对比。HTTP 是无状态的、无连接的应用层协议,适用于一般性网站和性能要求较高的应用;HTTPS 则通过 SSL/TLS 层提供加密、认证和完整性保护,适用于涉及敏感信息和高安全性的场景。文章还讨论了两者在性能上的差异,包括握手和加密开销、缓存效果以及 HTTP/2 的多路复用技术。最终,根据具体需求选择合适的协议能够更好地平衡安全性和性能。
50 2
HTTP和HTTPS的区别有哪些?
|
15天前
|
安全 应用服务中间件 Shell
nginx配置https的ssl证书和域名
nginx配置https的ssl证书和域名
|
18天前
url重写重定向所有http网址到https网址
url重写重定向所有http网址到https网址
21 4
|
28天前
|
前端开发 JavaScript 数据库
https页面加载http资源的解决方法
https页面加载http资源的解决方法
66 7
|
1月前
|
安全 应用服务中间件 网络安全
简单比较 http https http2,我们要如何把http升级为https
【9月更文挑战第13天】本文对比了HTTP、HTTPS和HTTP/2的特点与适用场景。HTTP以明文传输,适合低安全要求的环境;HTTPS通过SSL/TLS加密,适用于电子商务等安全要求高的场景;HTTP/2采用二进制格式和多路复用,适合高性能Web应用。文章还详细介绍了将HTTP升级为HTTPS的步骤,包括申请和安装SSL证书、配置Web服务器、重定向HTTP流量到HTTPS以及测试HTTPS功能。升级到HTTPS可提高数据安全性和用户信任度。
61 13
|
15天前
将http和https的非www顶级域名301重定向至www
将http和https的非www顶级域名301重定向至www
19 0
|
15天前
|
安全 应用服务中间件 网络安全
修复HTTPS升级后出现 Mixed Content: The page at 'https://xxx' was loaded over HTTPS, but requested an insecure frame 'http://xxx'. This request has been blocked; the content must be served over HTTPS. 的问题
修复HTTPS升级后出现 Mixed Content: The page at 'https://xxx' was loaded over HTTPS, but requested an insecure frame 'http://xxx'. This request has been blocked; the content must be served over HTTPS. 的问题
|
1月前
|
安全 网络安全 数据安全/隐私保护
HTTP与HTTPS协议区别及应用场景
在互联网高速发展的今天,HTTP与HTTPS作为数据传输的基石,作用至关重要。HTTP允许客户端与服务器间传输超文本文档,但其数据传输过程未加密,存在安全隐患;HTTPS则在此基础上加入了SSL/TLS协议,实现了数据加密传输,增强了安全性,广泛应用于电子商务、网上银行、政府网站及社交媒体平台等涉及敏感信息传输的领域,有效保护了用户隐私和数据安全。随着网络安全意识提升,HTTPS正逐渐成为主流。
|
2月前
|
算法 Java 测试技术
java 访问ingress https报错javax.net.ssl.SSLHandshakeException: Received fatal alert: protocol_version
java 访问ingress https报错javax.net.ssl.SSLHandshakeException: Received fatal alert: protocol_version
|
2月前
|
安全 网络安全 Windows
【Azure App Service】遇见az命令访问HTTPS App Service 时遇见SSL证书问题,暂时跳过证书检查的办法
【Azure App Service】遇见az命令访问HTTPS App Service 时遇见SSL证书问题,暂时跳过证书检查的办法
【Azure App Service】遇见az命令访问HTTPS App Service 时遇见SSL证书问题,暂时跳过证书检查的办法