什么是服务器?面向应用构建者的通俗指南
服务器是一台计算机,或者运行在计算机上的一个程序,它等待请求并作出响应。当你打开一个网站时,你的浏览器(即客户端)会通过互联网发送一个请求,然后某个地方的服务器会把页面、图片或数据发送回来。从电子邮件到网上银行,你使用的每一个应用,都依赖服务器每天数百万次地完成这项工作。
用 AI 构建应用时,为什么服务器很重要
当 AI 生成工具为你制作应用时,一部分代码运行在访客的浏览器中,另一部分通常运行在服务器上。服务器那部分负责那些浏览器既不能被信任、也无法独自完成的工作:
- 保存和读取数据,与数据库交互。
- 保管密钥,比如支付或 AI 服务商的 API 密钥,这些密钥绝不能到达浏览器。
- 检查权限,确保用户只能查看和修改自己的记录。
- 与其他服务通信:扣款、发送邮件、调用 AI 模型。
了解服务器的作用,有助于你弄清应用的规则究竟存放在哪里,为什么某些修改需要重新发布,以及托管一个应用时你究竟在为什么付费。关于两部分之间的分工,参见前端与后端。
日常类比
服务器就像邮局的柜台工作人员。他们不会主动去找顾客,而是等待。顾客走过来提出请求,比如“帮我寄这个包裹”或“我有没有邮件?”,工作人员处理后把结果交还给顾客。一位工作人员可以依次服务许多顾客,而繁忙的邮局则会开设更多的柜台。
邮局还有顾客无法越过的规则:取包裹必须出示身份证明。在应用中,服务器也扮演着这样的角色:浏览器可以请求任何东西,但由服务器决定最终能拿到什么。
请求如何到达服务器
当有人访问 https://bookings.example.com/schedule 时:
- DNS 查询。 浏览器向域名系统询问
bookings.example.com指向哪个 IP 地址。参见域名和 DNS 如何工作。 - 建立连接。 浏览器通过 443 端口(HTTPS)连接到该地址,并建立加密连接。参见什么是 HTTPS 和 SSL。
- 发送请求。 它发送一个 HTTP 请求:
GET /schedule。 - 处理工作。 服务器运行负责处理
/schedule的代码,比如从数据库中查询今天的预约。 - 返回响应。 它发回一个状态码(
200 OK)和内容,可能是一个 HTML 页面,也可能是供页面显示的 JSON 数据。
整个过程通常只需要几分之一秒。
你会听到的几种服务器
| 术语 | 含义 |
|---|---|
| Web 服务器 | 响应 HTTP 请求的软件,负责发送文件,或把请求转交给你应用的代码。 |
| 应用服务器 / 后端 | 运行你自己代码的服务器:处理预约、登录和支付的 API。 |
| 数据库服务器 | 专门负责存储和查询数据的服务器,比如你的应用所连接的 Postgres 数据库。 |
| 文件 / 静态服务器 | 发送现成的文件(HTML、图片、脚本),而无需为每个请求运行自定义代码。 |
| 物理服务器 | 位于数据中心机架上的一台实际机器。 |
| 虚拟机(VM)/ VPS | 物理机器的一部分,表现得像一台独立的计算机。 |
| 容器 | 将应用及其所需的一切打包在一起、运行在共享机器上的轻量包。许多平台都以这种方式部署应用。 |
| 无服务器(Serverless) | 你上传代码,由服务商按需运行,运行所在的服务器你无需管理。参见什么是无服务器。 |
请注意,“服务器”既指机器,也指程序。“服务器崩溃了”这句话可能指两者中的任何一个。
实际例子:一个美发店预约应用
以下是服务器在一个小型美发店预约应用中所做的工作:
- 访客打开网站。服务器(或其前面的 CDN)发送页面文件。
- 页面向服务器请求
GET /api/slots?date=2026-10-03。服务器查询数据库中的空闲时段,并以 JSON 形式返回。 - 访客预约了 14:00。页面发送
POST /api/bookings。服务器检查该时段是否仍然空闲(它不会盲目相信浏览器的说法),保存预约,并返回201 Created。 - 服务器使用保存在服务器端的私密密钥调用邮件服务,发送确认邮件。
如果把服务器关掉,页面或许仍能从 CDN 加载,但它无法显示时段,也无法保存预约。
服务器运行良好需要什么
- 内存(RAM)和 CPU。 内存太少,应用在高负载下会崩溃;CPU 太少,应用会变慢。
- 保持运行。 关闭的服务器无法响应请求。有些平台会让闲置的应用进入休眠,并在下一次访问时唤醒,这样可以节省费用,但第一次请求可能会更慢。
- 配置和密钥,通过环境变量提供。
- 日志,即服务器对所发生事情的记录,出问题时你首先应该查看的地方。
- 更新和安全补丁,托管服务通常会替你处理。
常见误解
- “云就意味着没有服务器。” 云是其他公司的服务器,你按小时或按用量租用。
- “服务器是一台大型特殊计算机。” 任何计算机都可以充当服务器。当你在开发时打开
localhost,你的笔记本电脑就在运行一台服务器。 - “如果按钮被隐藏了,用户就无法操作。” 任何人都可以直接向你的服务器发送请求。权限检查必须在服务器上进行,而不能只依赖页面。
- “增加服务器就能解决慢的问题。” 很多时候真正的原因是缓慢的数据库查询或外部 API。应先找到瓶颈。
- “我必须自己管理服务器才能拥有应用。” 托管平台会替你运行服务器;你只需部署代码,机器由它们负责。
向 AI 生成工具提出的要求
- “这个应用的哪些部分在服务器上运行,哪些在浏览器中运行?”
- “把所有 API 密钥保留在服务器上,并从环境变量中读取。”
- “对每一个读取或修改数据的请求,都在服务器上检查权限。”
- “服务器日志在哪里查看?它们对这个错误有什么说明?”
- “这个应用真的需要服务器吗,还是可以只做成静态网站?”
- “应用闲置一段时间之后,第一次请求会发生什么?”
Mythex 中的服务器
在 Mythex 中,你不需要搭建或管理服务器。在构建过程中,你的应用会运行在一个私有的云端沙盒中,用于实时预览。发布时,Mythex 会进行部署:静态前端部署为静态站点,后端(Node、Python、C#、Java 等)则根据 Dockerfile 构建成容器,你无需自己配置任何托管。Mythex 在部署时会选择机器规格:默认为 1 个 CPU 和 512 MB 内存,可按需提供更多(免费版最高 1 GB,Pro 版最高 2 个 CPU、4 GB 内存和 3 台机器)。已发布的应用在闲置时会休眠,并在下一次访问时唤醒,休眠中的应用不产生计算费用。详情请参阅文档中的 API 后端和托管限制,而我们的网站托管指南则涵盖了更广泛的内容。
常见问题
简单来说,什么是服务器?
服务器是一台计算机,或者运行在计算机上的一个程序,它等待其他设备发来的请求并作出响应。当你打开一个网站时,浏览器会向服务器请求页面,服务器再把页面发送回来。
服务器是实体机器还是软件?
两种含义都会用到。“服务器”既可以指物理或虚拟的计算机,也可以指其上处理请求的程序,比如网络服务器。如今大多数应用运行在云服务商数据中心的虚拟机或容器中,而不是运行在你自己拥有的硬件上。
每个网站都需要服务器吗?
需要,总得有什么东西把文件发送给访客。静态网站只需要一个简单的文件服务器或 CDN。而一个会保存数据、处理登录或保管 API 密钥的应用,还需要一台运行你自己代码的后端服务器。
localhost 是什么意思?
localhost 的意思是“这台同一台计算机”。开发者在自己的机器上运行应用时,会通过类似 http://localhost:3000 的地址打开它。只有那台计算机能访问它;在部署到公共服务器之前,其他人都看不到。