腾讯云 × 树莓派摄像头四周实战学习路线 第 2 周 · 第 8 天:Nginx 入门
2026/9/22 9:49:19 网站建设 项目流程

日期:2026-09-02

环境:腾讯云 Lighthouselhins-mxp4fa6e(ap-beijing)· Ubuntu 24.04 · nginx 1.24.0

一句话:安装 Nginx、打开 80 端口、让公网浏览器看到欢迎页 —— 但真正学到的不是这条命令链,而是如何定位"通与不通"的边界


一、目标与验收

#验收项验证方式结果
1装好 Nginxnginx -vnginx/1.24.0 (Ubuntu)
2在跑 + 开机自启systemctl status/is-enabledactive (running)/enabled
3服务器内部可访问curl -I 127.0.0.1200 OK
4公网可访问浏览器 + Maccurl✅ 欢迎页 /200 OK
5说出"三层门"是哪三层默写✅ 见第五节

二、核心概念

1)Nginx 的两个身份

身份做什么什么时候用
Web 服务器自己回答请求,返回静态文件今天
反向代理服务器把请求转交给后端(Node / Python / SRS)第 9 天起

2)80 端口

  • HTTP 默认端口(HTTPS 是 443)
  • 浏览器输http://IP/不写端口,默认就是敲 80 这个房间

3)systemctl(复习 Day 4)

命令作用是否换 PID
enable注册开机自启(当场不启动
start当场启动(不注册自启
reload平滑重载配置❌ 不变
restart真重启✅ 全换

enable+start配合使用才是合格操作。第 9 天改配置主要用reload

4)进程模型

  • 1 master + N worker
  • master 读配置、管手下;worker 真正处理请求
  • worker 数默认 = CPU 核数(本机 2 核 → 2 worker)

三、比喻:写字楼的前台小姐

角色对应职责
写字楼Ubuntu 24.04 操作系统提供水电气
大堂前台 小 NNginx客人进门第一个见到的人,决定他去哪间办公室
房间 8080 端口大楼正门(默认门牌号)
浏览器客人外部访客顺着地址敲门
门口保安安全组 + ufw决定谁能进大门

核心洞察:就算前台小 N 已经坐在岗位上,如果门口保安不放人进去,外面敲再多也没用。"服务就绪" ≠ "服务可达"。

Day 9 之后要做的事:让小 N 学会"听口音分诊" —— 听到/api/请上三楼(Node 服务),听到/live/请去地下(视频流服务)。


四、实战记录

4.1 启动与自启

sudo systemctl enable nginx sudo systemctl start nginx sudo systemctl status nginx
Loaded: loaded (...; enabled; preset: enabled) Active: active (running) since Sun 2026-08-30 21:18:26 CST; 3 days ago Main PID: 1019262 (nginx) Tasks: 3 (limit: 2263) CGroup: /system.slice/nginx.service ├─1019262 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;" ├─1019329 "nginx: worker process" └─1019330 "nginx: worker process"

已在运行的服务执行start不报错也不变化 ——start幂等的。

4.2 三层门

层级归属怎么改状态
腾讯云安全组云厂商控制台 / MCP,服务器上改不了❌→✅
服务器 ufw操作系统ufw allow❌→✅
服务绑定地址应用nginx 配置✅ 一直是

4.3 关键闭环

时点测试结果
安全组未开服务器内curl -m 5 -I http://154.8.173.130/curl: (28) Connection timed out
安全组已开Maccurl -m 8 -I http://154.8.173.130/HTTP/1.1 200 OK

同一条命令,开关前后天壤之别—— 这就是因果最清晰的证明。


五、今天的五个坑

坑 1:curl 127.0.0.1通,但curl 公网IP超时

命令流量路径过安全组
curl 127.0.0.1纯本机回环,不出网卡不过
curl 154.8.173.130出网卡 → 云网络绕一圈 → 回来要过

"自己访问自己"也要走完整网络栈 + 安全组。

坑 2:(28) timed out(7) refused

错误码含义你的判断
(28) timed out包被静默丢弃(防火墙 DROP)先查防火墙
(7) refused有人明确拒绝服务没在听这个端口

坑 3:pgrep -c nginx数的不是 worker 数

echo "worker 数: $(pgrep -c nginx)" # → 3(含 master!)

正确写法:

pgrep -c -f "nginx: worker process" ps -eo args | grep -c "[n]ginx: worker"

[n]ginx的方括号是老运维手法:模式串[n]ginx≠ 进程字面量nginxgrep 不会把自己数进去。去掉方括号就多数 1 个。

坑 4:Default: deny (incoming)时,DENY 规则是冗余的

那条15809/tcp DENY IN(OpenClaw 卸载后遗留)没干活—— 默认策略已把未放行端口全挡了。

坑 5:查 80 端口别写成grep ':80'

sudo ss -tlnp | grep -E ':80\b' # ✅ 锚定 sudo ss -tlnp | grep ':80' # ❌ 误捞 8080、8800

同理grep -E '8000|8888'竖线打丢会变成88888889静默筛空没输出 ≠ 不存在。


六、深层洞见(真正值钱的部分)

洞见 1:能定位"哪一层",比"会修"更值钱

今天从timed out一眼定位到防火墙层 —— 这个判断力才是核心资产。

  • 任何"端到端不通"的问题都能拆成 N 层
  • 找到"通"与"不通"的分界点,就找到了故障点
  • 推论:会修是技能,会定位是能力

洞见 2:沉默比拒绝的信息量更少

现象你得到的信息
refused对方在,但不要你 →服务活着
timed out对方不说话 →什么都不知道

推论:遇到沉默,靠"分层对比测试"破局,不要靠猜。

顺带:DROP 之所以不给回应,是故意的 —— 让攻击者分不清"端口空闲"和"端口存在但拒绝"。沉默是一种防御策略。

洞见 3:同一个东西,叫不同的名字,走完全不同的路

  • 127.0.0.1→ 回环(lo),内核内部,不出网卡
  • 154.8.173.130→ eth0 → 云网络 → 绕回来

更深层:在云/分布式环境里,"标识"决定"路径",不是"是谁"决定路径。

这解释了运维界的经典噩梦:"本机测试通过,上线就挂"

洞见 4:观测工具本身会影响你看到什么

pgrep -c nginx→ 3;pgrep -c -f "nginx: worker"→ 2。同一个系统,两种问法。

推论:当系统行为不符合预期,先怀疑"我的观测方式错了",再怀疑"系统错了"。

🚩这是新手和高手的分水岭:新手第一反应是"系统坏了",高手第一反应是"我是不是看错了"。

洞见 5:冗余 ≠ 无用 —— 配置会"说话"

15809/tcp DENY IN技术上冗余,但它表达了意图:"我们特别警惕这个端口"。

  • 代码/配置的价值不只是执行,还有沟通
  • 推论:别急着删"看起来没用"的东西,先问它想表达什么

什么时候它才真正起作用?当你把默认策略改成allow (incoming)时 —— 那时它就成了唯一的拦截点。

洞见 6:白名单思维 vs 黑名单思维

思维做法安全性
白名单(今天用的)默认 deny,按需放行✅ 漏一个只是不可用
黑名单默认 allow,按需封堵❌ 漏一个就是漏洞

推论:从"零信任"开始加例外,而不是从"全信"开始补窟窿。

洞见 7:可恢复性 > 当前可用

nginx 现在跑着不重要,重启后还在吗才重要。

  • enable就是买保险
  • 推论:任何需要手动拉起的服务,都是一颗定时炸弹

今天那台服务器还提示"需要重启系统"(内核更新待生效)。重启反而是一次真实的自愈演练 —— 但会打断 SRS,所以先搁着。

洞见 8:尊重硬件约束

worker 数 = CPU 核数,不是"想开多少开多少"。

  • 超过核数只会带来上下文切换开销,不会更快
  • 同一个思想出现在:数据库连接池、线程池、K8s resource limit
  • 推论:好的系统设计会尊重物理约束,而不是无视它

洞见 9:分层验证法(可复用的方法论)

今天做的事抽象出来只有 4 步:

1. 分层 → 把"能不能访问"拆成 N 层(云安全组 / ufw / 服务绑定) 2. 逐层验证 → 每层用不同视角的命令(控制台 / ss / curl) 3. 对比差异 → 内网 vs 外网、改前 vs 改后 4. 定位边界 → 找到"通"与"不通"的分界点 = 故障点

这个方法论可以迁移到任何"端到端不通"的排查:数据库连接不上、K8s Service 访问不了、微服务调用超时 —— 套路完全一样。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询