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

如何在NGINX自定义错误页面中展示请求携带的头部与状态码?

实现错误页展示状态码与请求头的操作步骤

你可以通过Nginx的SSI(服务器端包含)功能实现需求,无需额外部署后端服务,改动成本极低。

步骤1:调整Nginx配置

修改你的Nginx站点配置,示例如下:

location / {
    proxy_set_header X-Real-IP $remote_addr;
    # 错误码重定向到命名location处理,保留原请求状态
    error_page 400 404 500 502 503 504 @error_page;
}

# 错误页专属处理逻辑
location @error_page {
    # 开启SSI解析支持
    ssi on;
    ssi_types text/html;
    add_header Content-Type text/html;
    # 返回对应状态码,加载错误页文件
    return $status '<!--# include virtual="/test_error.html" -->';
}

# 配置错误页文件规则
location = /test_error.html {
    # 替换为你实际存放test_error.html的目录路径
    root /usr/share/nginx/custom_error;
    # 仅允许内部重定向访问,禁止外部直接请求该文件
    internal;
}

步骤2:修改自定义错误页代码

编辑你的test_error.html文件,通过SSI标签直接读取Nginx内置变量:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>请求错误</title>
</head>
<body>
    <h2>请求处理失败</h2>
    <p>* 错误状态码:<!--# echo var="status" --></p>
    <p>* X-Forwarded-For头部值:<!--# echo var="http_x_forwarded_for" default="未携带该请求头" --></p>
    <p>* 客户端直连IP:<!--# echo var="remote_addr" default="获取失败" --></p>
    <!-- 如需读取其他请求头,格式为http_加头部小写(横杠替换为下划线),示例如下 -->
    <p>* User-Agent:<!--# echo var="http_user_agent" default="获取失败" --></p>
</body>
</html>

步骤3:生效配置并测试

  • 执行nginx -t检查配置语法是否正确,无报错后执行nginx -s reload重载Nginx配置
  • VirtualBox环境需先确认端口映射规则正确,宿主机可以正常访问虚拟机的Nginx服务端口
  • 测试时可通过curl工具自定义请求头验证:curl -H "X-Forwarded-For: 192.168.56.10" http://虚拟机IP/任意不存在的路径,查看返回内容是否正常输出状态码和头部信息

补充说明

如果X-Forwarded-For头部存在多个IP(多层代理场景),$http_x_forwarded_for会返回完整的逗号分隔IP列表,你可按需提取对应位置的IP使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:36:04