You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx配置静态博客子路径路由时静态资源404问题求助

问题原因

你遇到的问题核心是 Hexo 生成的静态页面中所有静态资源引用为根路径绝对路径(如 /lib/xxx.css、/js/xxx.js),当你通过 /blog/ 路径访问博客时,浏览器会直接请求域名根路径下的这些资源,匹配到 Nginx 中 / 对应的主站目录,不会触发 /blog/ 的 location 规则,因此找不到对应资源。

解决方案

方案1:修改 Hexo 配置(推荐,兼容性最佳无冲突)

直接修改 Hexo 站点根目录下的配置文件 _config.yml,调整 root 字段为你的博客访问子路径:

root: /blog/

修改完成后执行 hexo clean && hexo generate 重新生成静态文件,此时所有静态资源的引用路径会自动加上 /blog/ 前缀,可直接匹配到 /blog/ 的 location 规则,从 /var/www/hexo/ 目录读取资源。

方案2:修改 Nginx 配置(无需调整 Hexo 时可选)

如果不想修改 Hexo 配置,可以在 /etc/nginx/conf.d/nginx.conf 的 443 端口 server 块中补充静态资源映射规则:

server {
    listen 443 ssl; 
    server_name dengxiaoxu.com; 
    # 原有SSL配置保持不变

    location  / {
        root         /home/deng/www/;
        index  index.html index.htm;
    }

    location  /blog/ {
        alias /var/www/hexo/;
        index  index.html index.htm;
    }

    # 新增以下规则,匹配博客的静态资源路径
    location ~ ^/(css|js|lib|images|2018|2020|2021|about|archives|categories|page|tags)/ {
        root /var/www/hexo/;
        # 若资源不存在可回退到主站目录查找,不需要可删除下一行
        try_files $uri $uri/ @main;
    }

    location @main {
        root /home/deng/www/;
    }
}

修改后执行 nginx -t 检查配置语法无错误后,执行 nginx -s reload 重载 Nginx 配置即可生效。

注意:该方案存在路径冲突风险,若你的主站也存在同名的 /css、/js 等目录,会优先匹配博客侧的资源,因此更推荐使用方案1。


内容的提问来源于stack exchange,提问作者Austin Deng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 23:09:04