什么是Web服务器?
其实web服务器就是一个接收来自 客户端 的的HTTP请求,并返回HTTP响应报文的软件。
为什么需要web服务器?
web服务器是 回应 web客户端请求的源泉。服务端与客户端使用万维网的标准语言(HTTP),使用这种标准语言,即使是旧的 Mozilla Netscap浏览器也可以与现代的Apache或Niginx web服务器对话,尽管无法像现代Web浏览器一样正确呈现页面设计。
web服务器的实现
可以通过多种方式来实现概念性的Web服务器构想。以下Web服务器实现均具有不同的功能,扩展和配置
-
在过去20多年的时间里,Apache HTTP Server一直是Internet上最常用的Web服务器。
-
Nginx是排名前100,000个网站中第二大最常用的服务器,通常用作Python WSGI服务器的反向代理 。
-
Caddy是Web服务器领域的新手,致力于通过HTTPS服务HTTP / 2协议。
-
rwasa是用Assembly编写的一种更新的Web服务器,没有外部依赖项,其调优速度比Nginx快。如果您需要在尚未经过测试的Web服务器上以最快的速度进行权衡,则值得一看这些基准测试,以查看该服务器是否可以满足您的需求。
客户端
向网络服务器发送请求的客户端通常是Internet Explorer,Firefox或Chrome之类的浏览器,但也可以是:
一个示例:Web服务器根据Web浏览器的请求将文件发送到Web浏览器。在第一个请求中,浏览器访问了“ www.fullstackpython.com”地址,服务器以index.html HTML格式的文件作为响应。该HTML文件包含对其他文件的引用,浏览器随后从服务器请求的style.css和script.js。
发送静态资产(例如CSS和JavaScript文件)会占用大量带宽,这就是为什么在可能的情况下使用Content Delivery Network(CDN)服务静态资产非常重要的原因。
使用Niginx
Nginx通常用作Web服务器,为Web浏览器客户端提供静态资产,例如图像,CSS和JavaScript。
Nginx通常也配置为反向代理,它将HTTP请求传递到WSGI服务器。WSGI服务器通过运行Python代码来生成动态内容。当WSGI服务器传递其响应(通常为HTML,JSON或XML格式)时,反向代理将以该结果响应客户端。
通常,客户端将不知道或不需要知道Python Web应用程序生成了结果。结果可能是由一个或多个以任何编程语言(而不仅仅是Python)编写的后端系统生成的。