Security.txt 应该怎么在 React 项目里正确配置?

W″倩利 阅读 36

我最近在做前端安全加固,看到建议加个 security.txt 文件,但不太清楚怎么在 React 项目里配。试过直接放 public 目录下,但部署后访问 /security.txt 返回 404,是不是还要改路由或者服务器配置?

我的项目是用 Create React App 搭的,现在 public 目录结构大概这样:

// public/security.txt
Contact: mailto:security@example.com
Expires: 2025-12-31T23:59:59.000Z
Preferred-Languages: en, zh

本地 dev server 能访问,但上线到 Nginx 就 404,是不是 React 的路由拦截了静态文件请求?

我来解答 赞 7 收藏
二维码
手机扫码查看
1 条解答
端木怡萱
这问题很典型,不是 React 路由的问题,是 Nginx 配置把静态文件请求也转发给 React 了。

你需要在 Nginx 配置里把 security.txt 单独摘出来,不走 React 的路由。找到你的站点配置文件,加一段:

server {
# 其他配置...

location = /security.txt {
root /path/to/your/public;
try_files $uri =404;
add_header Content-Type text/plain;
}

location / {
try_files $uri /index.html;
}
}


关键是 location = /security.txt 这个精确匹配要放在 location / 前面,Nginx 是按顺序匹配的。

改完记得 nginx -s reload 重新加载配置。

另外你文件里的日期格式有点问题,Expires 字段标准格式应该是:

Contact: mailto:security@example.com
Expires: 2025-12-31T23:59:59.000Z
Preferred-Languages: en, zh
Canonical: https://yourdomain.com/.well-known/security.txt
Encryption: https://yourdomain.com/pgp-key.txt


建议把文件移到 public/.well-known/security.txt,然后访问路径改成 /.well-known/security.txt,这是 RFC 9116 推荐的做法,兼容性更好。相应的 Nginx 配置也要改路径。
点赞
2026-03-16 18:15