利用 Nginx 静态托管完美解耦 favicon、robots 和 sitemap
将网站全网公共的基础静态资源(图标、爬虫协议、站点地图)剥离出后端业务项目,直接交由 Nginx 在最外层网关进行精确匹配托管,能够大幅降低后端无意义的路由解析与 404 渲染开销。
一、 准备静态文件
根据 Linux 运维规范,将静态资源统一收拢到 /var/www/static/ 目录下。直接使用 sudo 权限创建,文件默认会保持安全的 755(目录)和 644(文件)只读状态,无需手动修改 chown 或 chmod。
1. 创建公共静态目录
sudo mkdir -p /var/www/static
并将你的 favicon.ico 图标文件直接复制或移动到该目录下。
2. 创建 robots.txt
sudo vim /var/www/static/robots.txt
写入以下标准配置:
User-agent: *
Allow: /
Disallow: /api/
Disallow: /admin/
Sitemap: https://steggy.cn/sitemap.xml
3. 创建 sitemap.xml
sudo vim /var/www/static/sitemap.xml
写入基础站点地图:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://steggy.cn/</loc>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://steggy.cn/about</loc>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
二、 配置 Nginx 精确匹配拦截
打开你的 Nginx 网站配置文件(通常位于 /etc/nginx/sites-available/default 或 /etc/nginx/conf.d/ 下),在对应的 server { ... } 块内加入以下配置。
通过 = 精确匹配,Nginx 会以最高优先级在最外层截获请求,不再透传给后端应用。
server {
server_name steggy.cn;
# ... 原本的 SSL 证书及其他基础配置 ...
# 1. 精确拦截站点图标请求
location = /favicon.ico {
root /var/www/static;
access_log off; # 关闭访问日志,防止图标请求刷屏
log_not_found off; # 关闭文件未找到时的错误日志
expires 30d; # 强缓存 30 天
}
# 2. 精确拦截蜘蛛协议请求
location = /robots.txt {
root /var/www/static;
access_log off; # 关闭爬虫频繁请求的日志记录
log_not_found off;
expires 7d; # 缓存 7 天
}
# 3. 精确拦截站点地图请求
location = /sitemap.xml {
root /var/www/static;
access_log off;
log_not_found off;
expires 1d; # 缓存 1 天
}
# 4. 后端核心业务反向代理
location / {
proxy_pass http://localhost:5000;
# ... 其他 proxy_set_header 配置 ...
}
}
三、 平滑重载与验证
配置完成后,采用平滑重载(reload)确保在线业务零中断。
# 1. 检查 Nginx 配置文件语法
sudo nginx -t
# 2. 语法无误后平滑重载
sudo systemctl reload nginx
验证成果
- 浏览器测试: 访问
https://steggy.cn/robots.txt,应能秒级正常渲染文本。 - 日志核对: 频繁刷新上述三个静态页面后,检查后端应用的业务访问日志。后端日志中应当没有任何相关记录,说明流量已在 Nginx 层被完美拦截并处理。