装上一个 Web 服务器软件只是开头;真正让站点能安全上线的,是装完之后那一长串看起来琐碎的必修课。
3-9 讲了机器从哪来,这一节讲拿到机器之后要做什么。教材把【更新操作系统、安装 Apache、设置权限】写在标题里,这三件事恰好代表了三个层面:系统层、软件层、文件层。
一、装完只是开头
把 Web 服务器软件装上、能打开默认页,这只是【通】了。离【能对外上线】还差一长串动作,而这一串动作里的每一项,都对应着一类真实发生过的事故。
顺序上有一条基本逻辑:先把地基修好,再往上面放东西。系统补丁、账号权限、防火墙规则属于地基;装软件、传页面属于后面的装修。顺序反了,就等于在没锁门的房子里摆家具。
二、权限:三个数字讲完的事
操作系统的文件权限看起来很绕,其实就是三组【谁能读、谁能写、谁能执行】,用三个数字表示。
7 是读写执行都有,5 是读加执行,4 只是读,0 是什么都不能。目录常用 755,文件常用 644——这两个组合能覆盖绝大多数场景。
权限设错的后果很直接:太宽,别人能改你的页面;太紧,服务器自己读不出文件。而最该记住的一条是——永远不要用 777。
三、动手 Demo:检查清单与权限表
下面这张清单,每一项都对应过一次真实的事故,值得照着一条条对。
checks = ["更新系统补丁", "改默认端口与账号", "安装 Web 服务器", "放行 80 与 443",
"设置文件权限", "用低权限账号运行", "开启日志与备份", "配置 HTTPS 并自动续期"]
for i, c in enumerate(checks, 1):
print("%d. %s" % (i, c))
print("目录 755 / 文件 644 / 私密 600 / 只读 400 / 永远别用 777")
实跑输出:
--------------------------------------------------------------------
D10 设置 Web 服务器:装完之后还有一长串必修课
--------------------------------------------------------------------
装上一个 Web 服务器软件只是开头。真正让站点能安全上线的,是后面这些动作。
要做什么 具体动作 漏掉的后果
--------------------------------------------------------------------------------------
更新操作系统 装完先打补丁再开站 已知漏洞直接对着公网敞开
改默认端口与账号 别用出厂配置直接上线 被扫描器几秒钟就扫到
装 Web 服务器软件 按需要装 Apache 或 Nginx 没有能响应请求的程序
放行 80 与 443 防火墙和云安全组都要放 服务器正常,外面就是打不开
设置文件权限 网页目录 755、文件 644 权限过宽,被人改掉页面
别用 root 跑服务 建一个专用低权限账号 程序被攻破就等于机器被交出
配好日志与备份 访问日志、错误日志、定期快照 出事时查不到、也退不回来
配好 HTTPS 证书 自动续期,别等过期 到期当天浏览器直接报警告
上面反复提到的【权限】,在 Linux 上是三个数字就说完的事:
数字 用在哪 含义
----------------------------------------------------------------------------
755 目录常用 自己可读写执行,别人可进可读
644 文件常用 自己可读写,别人只能读
600 私密文件 只有自己能读写,别人一概不行
400 只读文件 连自己也不能改,防误改
777 千万别用 所有人可读写执行,等于把门拆了
至于装哪一个,看 2026 年的实际分布:
Web 服务器软件 占网站比例 特点
--------------------------------------------------------------------------
Nginx 31.6% 轻量、高并发,反代顺手
Cloudflare Server 29.1% 由服务商直接响应,不用自己装
Apache 23.0% 老牌、模块多、配置直观
LiteSpeed 14.9% 商业软件,常随主机预装
Node.js 6.8% 直接跑 JavaScript 服务
Microsoft-IIS 3.1% Windows 环境的老搭档
清单里有两项特别值得单说。一项是【放行 80 与 443】——服务器内部防火墙和云安全组是两套独立的开关,只开一边照样打不开,这是新手最容易卡住的地方。
另一项是【别用 root 跑服务】。Web 服务器是直接面对公网的程序,万一被攻破,进程的身份就是攻击者能拿到的权限。用 root 跑,等于把整台机器交出去;用专用低权限账号跑,损失就被限制住了。
四、装哪一个
2026 年的实际分布是:Nginx 31.6%、Cloudflare Server 29.1%、Apache 23.0%、LiteSpeed 14.9%、Node.js 6.8%、Microsoft-IIS 3.1%。
Apache 依然是主流选择之一,尤其适合边学边配:模块多、文档全、配置文件直观,出错时的报错信息也更容易查到中文资料。
Nginx 更轻、更擅长应付高并发,也常被当成反向代理放在前面。实际生产里常见的是两者组合:Nginx 挡在前面处理静态资源和转发,后面的应用服务器专心算业务。
30 秒实验
- 在本机练一次权限:新建一个文件,用
chmod 777与chmod 644分别设一次,看权限位怎么变,再想想为什么 777 是危险值。 - 打开任意一台云服务器控制台的安全组页面,对照清单检查:80 和 443 放行了吗?22 限制来源了吗?还有哪些用不到的端口开着?
- 访问你的站点,在浏览器开发者工具里看响应头,确认服务器软件是什么、版本号有没有被暴露——暴露具体版本号是被动信息泄露。
常见误区
- 错误:装完 Web 服务器软件,网站就算上线了。——纠正:能打开默认页只是【通】了。补丁、权限、防火墙、证书、备份,少一样都可能在某个时刻变成事故。上线是一个清单,不是一个动作。
- 错误:权限给得宽一点,省得报错。——纠正:宽权限省下的时间,会在被人改掉页面的那一天加倍还回去。而且权限太宽还会传导:一个能被改的脚本,就可能变成攻击者的入口。
- 错误:防火墙开了,云安全组就不用管了。——纠正:这是两套独立的开关,默认都关着。云安全组在机器外面,系统防火墙在机器里面,两边都放行,流量才过得去。只开一边,现象就是【本机访问正常、外面打不开】。
- 错误:用 root 跑服务只是方便。——纠正:这等于把整台机器的钥匙挂在门上。服务一旦被攻破,攻击者拿到的就是最高权限。正确做法是建一个专用账号,只给它需要的目录和权限。
自测三问(点开对答案)
1. 为什么不能只开防火墙、不管云安全组? —— 因为**它们是两套独立的开关**:云安全组在机器外面过滤流量,系统防火墙在机器里面过滤。**两边都要放行,请求才能真正到达服务**。只开一边的典型现象就是——**本机访问没问题,外面就是打不开**。 2. 目录 755、文件 644 分别是什么意思? —— **755**:自己可读写执行,别人可进入、可读,但不能改;**644**:自己可读写,别人只能读。**一个给目录、一个给文件**,这两个组合覆盖了绝大多数网页目录的需求。 3. 为什么 Web 服务不应该用 root 运行? —— 因为**进程的权限就是被攻破后攻击者能拿到的权限**。用 root 跑,一旦程序有漏洞,**攻击者直接拿到整台机器的最高权限**;用专用低权限账号,损失就被限制在它能访问的那部分文件里。- ☐ 下一节(3-11 选择Web服务器服务套餐)
相关笔记
- 创建Web服务器的方法 —— 上一节:机器从哪来
- SaaS、PaaS、IaaS —— 从服务形态看【谁负责哪一层】
- 🛡️ 网络与信息安全 —— 补丁、漏洞与权限的完整讲法
- ☁️ 云计算 —— 云服务的安全与导入
- 🕸️ Web技术原理 · 索引