解决NotionNext站点RSS订阅404问题

📖背景

NotionNext 部署方案

网站基于 NotionNext,通过 Docker 容器化部署,映射本地端口 3001

Nginx 反向代理

外网访问是通过本地 Nginx 代理访问,主要暴露 80443 端口,用于 HTTPS 配置。

❓问题描述

🔗本地访问

服务在本地可以正常访问,如:curl http://127.0.0.1:3001/rss/feed.xml 返回正常。

🌐外网访问

通过外网访问却是跳转到了404页面,如下图所示:

404.png

初步判断问题出在 Nginx 的代理配置上。

👉 配置参考:Nginx+ACME服务器搭建

✅解决方案

⚙️修改 Nginx 配置

原先的代理规则中没有针对 .xml 请求的特殊处理。需要新增如下配置来正确转发 RSS 链接:

1
2
3
4
5
6
7
8
9
location ~* \.xml$ {
proxy_pass http://127.0.0.1:3001;
charset utf-8;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
add_header Content-Type "application/rss+xml; charset=utf-8";
}

📌 说明

  • location ~* \.xml$:正则匹配 .xml 结尾的请求。
  • add_header 明确指定 RSS 的 Content-Type,避免浏览器误判。

🔁重启服务

更新配置后,执行:

1
sudo systemctl restart nginx

确认服务无报错,即可正常访问 RSS 订阅链接。

🚀 总结

  • 本地无问题 → 外网 404,通常是反向代理配置漏掉了路径或类型处理。
  • .xml 文件在 Nginx 中需要单独声明转发。
  • 小问题,快速排查,记录一次 ✍️。