Skip to content

树莓派4B自建网页服务器指南(4):Nginx 静态页 + IPv6 局域网直连与基础验证

一、前言

经过前三篇的配置,树莓派已经完成了以下工作:

  • 系统离线烧录并完成基础配置
  • NetworkManager 接管 WiFi,IPv6 SLAAC 公网地址稳定
  • 博通芯片防飘参数固化
  • 开机自动关闭 WiFi 省电
  • SSH 主机名 jiejinx可访问
  • Golden Image 制作完成,可随时还原系统

现在,是时候让树莓派真正成为一个可通过 局域网 IPv6​ 访问的 Web 服务器了。

⚠️ 本文范围说明:本文所有操作仅保证同 WiFi 局域网内可通过 IPv6 访问树莓派。手机流量等公网访问因运营商封禁 80/443 端口及光猫 IPv6 防护默认开启,无法直接打通。
公网访问的解决方案见第6篇(公网直连验证)和第7篇(ECS 反向代理)。

二、环境确认

开始之前,确认树莓派当前状态:

bash
# 确认系统版本
cat /etc/os-release | head -1

# 确认 IPv6 地址
ip -6 addr show wlan0 | grep 'scope global'

# 确认 SSH 可访问
hostname -I

预期输出:看到 2409开头的公网 IPv6 地址。

三、配置国内镜像源(可选,但推荐)

Raspberry Pi OS 的官方源服务器在海外,国内下载速度较慢。建议先替换为国内镜像源。

3.1 查看当前源配置

bash
ls /etc/apt/sources.list.d/

你的系统如果是 Debian trixie,源文件格式为 .sources

3.2 备份原配置

⚠️ Debian 12 Bookworm 起的新格式,若实际文件名为 raspi.list,则将下面命令中的 raspi.sources替换为 raspi.list

bash
sudo cp /etc/apt/sources.list.d/debian.sources /etc/apt/sources.list.d/debian.sources.bak
sudo cp /etc/apt/sources.list.d/raspi.sources /etc/apt/sources.list.d/raspi.sources.bak

3.3 替换 Debian 源为清华镜像

bash
sudo nano /etc/apt/sources.list.d/debian.sources

清空原内容(Alt+a→ Alt+/→ Ctrl+K,标记 → 移至末尾 → 剪切),复制粘贴以下内容:

Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/debian
Suites: trixie trixie-updates trixie-backports
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/debian-security
Suites: trixie-security
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

保存退出(Ctrl+O→ Enter→ Ctrl+X)。

3.4 替换 Raspberry Pi 源为清华镜像

执行以下命令修改 raspi.sources:

sudo nano /etc/apt/sources.list.d/raspi.sources

清空原内容(Alt+a→ Alt+/→ Ctrl+K,标记 → 移至末尾 → 剪切),复制粘贴以下内容:

Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/raspberrypi
Suites: trixie
Components: main
Signed-By: /usr/share/keyrings/raspberrypi-archive-keyring.gpg

保存退出(Ctrl+O→ Enter→ Ctrl+X)。

3.5 更新索引

bash
sudo apt update

看到从 mirrors.tuna.tsinghua.edu.cn拉取数据即成功。

四、安装 Nginx

bash
sudo apt install nginx -y

安装完成后,Nginx 会自动启动并设置为开机自启。验证:

bash
sudo systemctl status nginx
# 应显示 active (running)

curl http://localhost
# 应返回 Nginx 默认欢迎页的 HTML

五、放置自定义网页文件

替换 Nginx 的默认欢迎页,放一个属于自己的首页。

bash
sudo nano /var/www/html/index.html

清空原内容(Alt+a→ Alt+/→ Ctrl+K,标记 → 移至末尾 → 剪切),复制粘贴以下内容:

html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>jiejinx · 树莓派</title>
<style>
 body{font-family:sans-serif;max-width:640px;margin:40px auto;padding:0 20px;line-height:1.6}
 h1{color:#333}
 .info{background:#f5f5f5;padding:16px;border-radius:8px;font-family:monospace;word-break:break-all}
</style>
</head>
<body>
<h1>🌲 jiejinx 的树莓派</h1>
<p>如果你看到这页,Nginx + IPv6 直连成功。</p>
<hr>
<h2>你的访问 IPv6</h2>
<div class="info" id="ip">正在获取…</div>
<script>
fetch('https://api6.ipify.org?format=json')
 .then(r=>r.json())
 .then(d=>ip.textContent='你的 IPv6:'+d.ip)
 .catch(()=>ip.textContent='获取失败(可能通过 IPv4 访问)');
</script>
</body>
</html>

保存退出(Ctrl+O→ Enter→ Ctrl+X)。

六、配置 Nginx 监听 IPv6

备份默认配置文件:

bash
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak

编辑默认站点配置:

bash
sudo nano /etc/nginx/sites-available/default

清空原内容(Alt+a→ Alt+/→ Ctrl+K,标记 → 移至末尾 → 剪切),复制粘贴以下内容:

server {
    listen 80;
    listen [::]:80;

    root /var/www/html;
    index index.html;

    server_name _;

    location / { try_files $uri $uri/ =404; }
}

保存退出(Ctrl+O→ Enter→ Ctrl+X)。

测试配置并重载 Nginx:

bash
sudo nginx -t
# 应输出 syntax is ok / test is successful

sudo systemctl reload nginx

确认 Nginx 已在 IPv6 端口上监听:

bash
ss -tlnp | grep ':80'

应看到类似输出:

LISTEN 0      511          0.0.0.0:80       0.0.0.0:*    users:(("nginx",pid=xxx,fd=xx))
LISTEN 0      511             [::]:80          [::]:*    users:(("nginx",pid=xxx,fd=xx))

[::]:80这一行说明 Nginx 已在 IPv6 上监听 ✅

七、本地验证(局域网内)

7.1 树莓派本机验证

bash
# 通过 IPv4 环回地址访问
curl http://localhost

# 通过 IPv6 环回地址访问
curl -g http://[::1]

都应返回你刚才写的 HTML 页面内容 ✅

7.2 同网络下其他设备浏览器验证

在同一局域网内的其他设备(电脑、平板、手机连接同一 WiFi)上进行浏览器访问验证,这是最接近真实使用场景的测试:

方法一:通过主机名访问(推荐)

在 Windows 电脑浏览器地址栏输入:

http://jiejinx.local

前提:树莓派已启用 mDNS(默认已开启),同一网络下的设备可自动解析主机名。

方法二:通过局域网 IPv4 地址访问

bash
# 查看树莓派局域网 IPv4 地址
hostname -I
# 输出示例:192.168.1.4

# 在 Windows 电脑浏览器地址栏输入
http://192.168.1.4

方法三:通过公网 IPv6 地址访问(仅限同WiFi局域网段)

在 Windows 电脑浏览器地址栏输入:

http://[2409:8a7c:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]

bash
#将 xxxx替换为树莓派实际的公网 IPv6 地址,树莓派中通过以下命令获取:
ip -6 addr show wlan0 | grep 'scope global'

⚠️ 注意ipv6地址在浏览器中访问,需要用 [ ] 包裹ip地址。 此方法要求访问端设备已获取公网 IPv6 地址。若访问端无公网 IPv6,将无法打开页面,属正常现象。

7.3 验证成功标准

只要以下任一方式能正常打开树莓派 Nginx 首页,即表示 Nginx 配置正确、网络可达:

验证方式访问地址适用场景
树莓派本机 curlhttp://localhost/http://[::1]快速验证 Nginx 是否运行
同网络浏览器(主机名)http://jiejinx.local日常使用最便捷
同网络浏览器(IPv4)http://192.168.1.x主机名解析失败时备用
同网络浏览器(IPv6)http://[2409:...]验证 IPv6 直连(需访问端有 IPv6)

八、关于公网访问的重要说明(为何手机流量无法直接访问)

8.1 现象

许多读者在完成上述局域网验证后,尝试用手机流量(关闭 WiFi)访问树莓派的公网 IPv6 地址,却发现页面无法打开。这不是你的配置问题,而是国内家庭宽带的普遍限制

8.2 根本原因

  1. 运营商封禁 80/443 端口:国内家用宽带(包括移动、联通、电信)默认封锁入站的 80(HTTP)和 443(HTTPS)端口,以防止未备案的私设网站。即使你有公网 IPv6,外网也无法通过 80 端口访问你的服务。

  2. 光猫 IPv6 防火墙(SPI)默认开启:光猫出厂设置通常开启 IPv6 SPI 防护,会拦截所有未经允许的入站连接。这使得即使使用非标准端口(如 8080),外网也无法主动连接。

8.3 解决方案概览

问题解决方案详见
80/443 端口被封使用非标准端口(如 9133),或通过 ECS 反向代理隐藏端口第6篇、第7篇
光猫 IPv6 防护拦截关闭光猫 SPI 防护(有安全风险),或使用 Cloudflare Tunnel 出站穿透第6篇、7.1 番外
希望生产级稳定方案购买最低配 ECS 做反向代理网关,备案域名 + 标准 443 端口第7篇(主线)

💡 战略转向:依靠家庭宽带的“裸奔” IPv6 直连,在复杂的公网环境中极不稳定。本专栏的最终生产方案是第7篇的 ECS 反向代理——用备案域名 + 云服务器作为合法流量入口,彻底绕过家庭网络的端口封锁与防火墙限制。

8.4 当前阶段的正确认知

  • 本文已完成的目标:树莓派 Nginx 正常运行,局域网内可通过 IPv6 访问 ✅

  • 尚未达成的目标:手机流量公网直连(可看专栏第6篇讲解光猫防护处理,或直接跳到第7篇使用 ECS 方案)

九、域名注册与 ICP 备案指引(阿里云示例)

要让你的树莓派服务通过域名访问,需要完成域名注册和 ICP 备案。以下是简要指引。

购买成本参考 7.3 番外篇

9.1 域名注册

  1. 登录阿里云 → 进入【域名注册】板块

  2. 查询并购买心仪域名(如 yourdomain.com)

  3. 按官方引导完成实名认证

9.2 ICP 备案

⚠️ 首次备案需购买一台大陆地域的轻量应用服务器(最低配即可,新人促销活动一般会有百元一年的极低折扣价,也可按月付费购买),用于生成备案服务号。仅购买域名不足以提交首次备案

  1. 进入阿里云【ICP 备案】板块

  2. 新增备案 → 选择刚购买的轻量服务器生成的服务号

  3. 按引导填写主体信息、网站信息(域名)

  4. 完成短信核验 + 通管局审核(通常 1-2 周)

  5. 备案通过后,域名可解析至阿里云 ECS(A 记录),由 ECS 反向代理至树莓派。具体配置见专栏第7篇。

9.3 备案通过后的架构

备案域名(ICP 已过审)
   ↓ A / AAAA 记录
阿里云 ECS(大陆节点,需备案域名)
   ↓ 反代回源 / frp 穿透(可选)
树莓派(公网 IPv6 或内网穿透)
  • ECS / 轻量云主机:备案载体 + 反向代理网关。作为公网流量入口,接收 80/443 请求,转发至树莓派。可选 frp 服务端,实现完全出站穿透,彻底绕过光猫 IPv6 防护。

  • 树莓派:真正跑服务,数据和服务全在自己手里。通过 IPv6 直连或 frp 客户端与 ECS 通信,无需暴露家宽入站端口。

十、目标完成清单

项目状态
国内镜像源配置(含 Raspberry Pi 源)
Nginx 安装并运行
放置自定义网页文件
配置 Nginx 监听 IPv6
本地 curl 验证通过
局域网内浏览器访问验证通过
理解公网访问限制及后续方向✅(详见专栏第7篇 ECS 反代方案)
域名注册与备案指引