导读:本期聚焦于小伙伴创作的《如何解决Nginx自定义400错误页面在SSL下资源加载失败的问题》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何解决Nginx自定义400错误页面在SSL下资源加载失败的问题》有用,将其分享出去将是对创作者最好的鼓励。

在Nginx中配置自定义400错误页面时,如果站点启用了SSL,经常会遇到错误页面本身能显示,但里面的CSS、JS或图片等静态资源无法加载的情况。这通常是因为错误响应中资源引用协议不一致,或者Nginx没有正确将静态资源请求放行导致的。

如何解决Nginx自定义400错误页面在SSL下资源加载失败的问题

问题产生的原因

当客户端发起HTTPS请求并触发400错误时,Nginx通过error_page指令返回自定义页面。若页面里使用绝对HTTP路径引用资源,浏览器会因混合内容策略阻断加载;若资源路径被错误重定向到错误页本身,也会造成循环或404。

  • 错误页中资源使用http://开头,与HTTPS页面冲突
  • 静态资源location未排除错误页拦截规则
  • error_page配合return导致内部重定向丢失上下文

基础错误页配置

先来看一个最简单的自定义400页面配置,将错误页放在本地,并通过相对路径引用资源。

server {
    listen 443 ssl;
    server_name www.ipipp.com;

    ssl_certificate     /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    # 自定义400错误页
    error_page 400 /error/400.html;

    location = /error/400.html {
        root /usr/share/nginx/html;
        internal;
    }

    # 静态资源放行
    location /error/ {
        root /usr/share/nginx/html;
        internal;
    }
}

错误页中资源引用方式

在400.html中,应使用相对路径或自动协议引用资源,避免写死http。

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="utf-8">
    <title>400 错误</title>
    <link rel="stylesheet" href="/error/style.css">
</head>
<body>
    <h1>请求有误</h1>
    <p>请检查网址是否正确</p>
    <img src="/error/icon.png" alt="提示">
</body>
</html>

使用map统一协议头

若错误页需获知外部协议,可用map提取scheme,但错误页内部资源仍建议用相对路径。

map $scheme $static_proto {
    default "https";
    http   "http";
}

server {
    listen 443 ssl;
    error_page 400 /error/400.html;
    location /error/ {
        root /usr/share/nginx/html;
        internal;
    }
}

调试建议

遇到资源加载问题,可打开浏览器控制台查看Blocked mixed content类报错,并确认Nginx日志中是否有静态资源被导向400.html的记录。通过调整location权限与资源路径,即可在SSL下正常展示自定义400页面及其附属文件。

NginxSSL自定义错误页面修改时间:2026-07-27 12:18:18

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。