跳至内容

第二部分:Web 服务器简介

简介

HTTP 协议

HTTPHyperText Transfer Protocol)自 1990 年以来一直是互联网上使用最广泛的协议。

此协议允许在浏览器(客户端)和 Web 服务器(在 UNIX 机器上称为 httpd)之间传输文件(主要以 HTML 格式,但也包括 CSS、JS、AVI 等),这些文件通过称为URL的字符字符串进行定位。

HTTP 是一种在TCPTransmission Control Protocol)之上运行的“请求-响应”协议。

  1. 客户端打开到服务器的 TCP 连接并发送请求。
  2. 服务器分析请求并根据其配置进行响应。

HTTP 协议是“无状态”的:它不会从一个请求到下一个请求保留有关客户端状态的任何信息。像 PHP、Python 或 Java 这样的动态语言会将客户端会话信息存储在内存中(例如在电子商务网站上)。

当前的 HTTP 协议是广泛使用的 1.1 版,以及正在逐步普及的 2 版和 3 版。

HTTP 响应是服务器发送到浏览器的多行信息。它包括

  • 状态行:使用代码和说明文本指定协议版本和请求的处理状态。该行包含三个由空格分隔的元素

    • 使用的协议版本
    • 状态代码
    • 代码的含义
  • 响应报头字段:这些可选行提供有关响应和/或服务器的附加信息。每行包含一个限定报头类型的名称,后跟冒号 (:) 和报头值。

  • 响应主体:包含所请求的文档。

这是一个 HTTP 响应的示例

$ curl --head --location https://docs.rocky-linux.cn
HTTP/2 200
accept-ranges: bytes
access-control-allow-origin: *
age: 109725
cache-control: public, max-age=0, must-revalidate
content-disposition: inline
content-type: text/html; charset=utf-8
date: Fri, 21 Jun 2024 12:05:24 GMT
etag: "cba6b533f892339d3818dc59c3a5a69a"
server: Vercel
strict-transport-security: max-age=63072000
x-vercel-cache: HIT
x-vercel-id: cdg1::pdqbh-1718971524213-4892bf82d7b2
content-length: 154696

注意

学习如何使用 curl 命令将有助于将来对您的服务器进行故障排除。

Web 服务器的作用是将 URL 转换为本地资源。查询 https://docs.rocky-linux.cn/ 页面就像向这台机器发送 HTTP 请求一样。DNS 服务起着至关重要的作用。

URL

URLUniform Resource Locator)是用于指定互联网上资源的 ASCII 字符串。它非正式地称为网络地址。

URL 包含三个部分

<protocol>://<host>:<port>/<path>
  • 协议名称:这是用于通过网络进行通信的语言,例如 HTTP、HTTPS、FTP 等。最广泛使用的协议是 HTTP(超文本传输协议)及其安全版本 HTTPS,用于以 HTML 格式交换网页。

  • 登录密码:此选项允许您指定对安全服务器的访问参数。不建议使用它,因为密码在 URL 中可见(出于安全目的)。

  • 主机:这是托管所请求资源的计算机的名称。请注意,也可以使用服务器的 IP 地址,但这会使 URL 难以阅读。

  • 端口号:它与允许服务器了解所请求资源类型的服务相关联。HTTP 协议的默认端口是端口 80 和带有 HTTPS 的 443。因此,当协议是 HTTP 或 HTTPS 时,端口号是可选的。

  • 资源路径:这部分让服务器知道资源的位置。通常,它是所请求文件的路径(目录)和名称。如果地址中没有任何内容指定位置,则表示主机的第一个页面。否则,表示要显示的页面的路径。

端口

HTTP 请求将到达运行在主机的服务器的端口 80(HTTP 的默认端口)。但是,管理员可以自由选择服务器的监听端口。

HTTP 协议有安全版本:HTTP 协议(端口 443)。使用 mod_ssl 模块实现这种加密协议。

也可以使用其他端口,例如端口 8080(Java EE 应用程序服务器)。

Apache 和 Nginx

Linux 上最常见的两个 Web 服务器是 Apache 和 Nginx。我们将在接下来的章节中讨论这个问题。

作者:Antoine Le Morvan

贡献者:Steven Spencer、Ganna Zhyrnova