尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

腾讯云 × 树莓派摄像头四周实战学习路线 第 2 周 · 第 8 天:Nginx 入门

腾讯云 × 树莓派摄像头四周实战学习路线 第 2 周 · 第 8 天:Nginx 入门 日期2026-09-02环境腾讯云 Lighthouselhins-mxp4fa6eap-beijing· Ubuntu 24.04 · nginx 1.24.0一句话安装 Nginx、打开 80 端口、让公网浏览器看到欢迎页 —— 但真正学到的不是这条命令链而是如何定位通与不通的边界。一、目标与验收#验收项验证方式结果1装好 Nginxnginx -v✅nginx/1.24.0 (Ubuntu)2在跑 开机自启systemctl status/is-enabled✅active (running)/enabled3服务器内部可访问curl -I 127.0.0.1✅200 OK4公网可访问浏览器 Maccurl✅ 欢迎页 /200 OK5说出三层门是哪三层默写✅ 见第五节二、核心概念1Nginx 的两个身份身份做什么什么时候用Web 服务器自己回答请求返回静态文件今天反向代理服务器把请求转交给后端Node / Python / SRS第 9 天起280 端口HTTP 默认端口HTTPS 是 443浏览器输http://IP/不写端口默认就是敲 80 这个房间3systemctl复习 Day 4命令作用是否换 PIDenable注册开机自启当场不启动—start当场启动不注册自启—reload平滑重载配置❌ 不变restart真重启✅ 全换enablestart配合使用才是合格操作。第 9 天改配置主要用reload。4进程模型1 master N workermaster 读配置、管手下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 nginxLoaded: 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✅同一条命令开关前后天壤之别—— 这就是因果最清晰的证明。五、今天的五个坑坑 1curl 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有人明确拒绝服务没在听这个端口坑 3pgrep -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 个。坑 4Default: deny (incoming)时DENY 规则是冗余的那条15809/tcp DENY INOpenClaw 卸载后遗留没干活—— 默认策略已把未放行端口全挡了。坑 5查 80 端口别写成grep :80sudo 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→ 3pgrep -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 访问不了、微服务调用超时 —— 套路完全一样。
返回列表