博客
关于我
结合nginx源码学习error_page和proxy 指令的关系
阅读量:205 次
发布时间:2019-02-28

本文共 1881 字,大约阅读时间需要 6 分钟。

Nginx代理上游服务器错误处理配置详解

Nginx作为高性能的反向代理服务器,在处理上游服务器返回的错误响应时,可以通过proxy_intercept_errors指令和error_page模块进行智能拦截和定制处理。本文将详细介绍如何配置Nginx,实现对上游服务器返回的404和50x错误页面的自定义处理。

服务部署情况

  • 主服务(Nginx:80)

    • 工作于80端口,配置文件路径为/usr/local/nginx/sbin/nginx
  • 上游服务(Nginx:8012)

    • 工作于8012端口,配置文件路径为/usr/local/nginx_8012/nginx

上游服务器文件说明

上游服务器提供了多种错误页面来处理404和50x错误:

  • 404.html:上游服务器默认的404错误页面。
  • 404_default.html:上游服务器的默认404错误页面。
  • 50x.html:上游服务器默认的50x错误页面。
  • 50x_default.html:上游服务器处理50x错误的默认页面。

需要注意的是,404.html50x.html是用于Nginx:80服务的配置,而404_default.html50x_default.html则是用于Nginx:8012服务的配置。

Nginx配置示例

Nginx:80服务中的404和50x配置

server {    listen 80;    server_name example.com;    location / {        proxy_intercept_errors on;        error_page 404 /404.html;        error_page 50x /50x.html;    }}

Nginx:8012服务中的404和50x配置

server {    listen 8012;    server_name example.com;    location / {        proxy_intercept_errors on;        error_page 404 /404_default.html;        error_page 50x /50x_default.html;    }}

配置说明

  • proxy_intercept_errors开启

    这个指令告诉Nginx拦截上游服务器返回的错误响应,进行处理。

  • error_page模块

    • error_page 404 /404.html;:当上游服务器返回404错误时,Nginx会请求404.html文件。
    • error_page 50x /50x.html;:当上游服务器返回50x错误(如500、502、503、504)时,Nginx会请求50x.html文件。
  • 测试结果

    测试1:Nginx:80服务处理404错误

    • 配置:Nginx:80服务中404.html文件不存在。
    • 结果:Nginx会请求上游服务器的404_default.html文件,响应头包含Cache-Control和gzip编码。

    测试2:Nginx:80服务处理404错误(自定义文件)

    • 配置:修改404.html404_not_exists.html
    • 结果:由于文件不存在,Nginx会使用上游服务器的404_default.html文件,响应内容为默认404页面。

    测试3:Nginx:80服务处理50x错误

    • 配置:Nginx:8012服务中50x_default.html文件不存在。
    • 结果:Nginx会请求上游服务器的50x_default.html文件,响应内容为默认50x页面。

    error_page的其他功能

    修改响应状态码

    error_page 404 200 /custom_404.html;
    • 效果:将404错误状态码修改为200,响应内容为custom_404.html文件。
    • 注意:等号与@404fallback之间需保留空格。

    支持多种状态码

    error_page 301 /redirect.html;error_page 302 /redirect.html;
    • 效果:将301和302状态码都重定向到redirect.html文件。

    总结

    通过合理配置Nginx的proxy_intercept_errorserror_page模块,可以实现对上游服务器返回的404和50x错误页面的自定义处理。这种方式不仅可以美化错误页面,还可以通过修改响应状态码来优化用户体验。

    转载地址:http://kcti.baihongyu.com/

    你可能感兴趣的文章
    OpenCV与AI深度学习 | 实战 | 基于YOLOv9+SAM实现动态目标检测和分割(步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 实战 | 基于YOLOv9和OpenCV实现车辆跟踪计数(步骤 + 源码)
    查看>>
    OpenCV与AI深度学习 | 实战 | 文本图片去水印--同时保持文本原始色彩(附源码)
    查看>>
    OpenCV与AI深度学习 | 实战 | 通过微调SegFormer改进车道检测效果(数据集 + 源码)
    查看>>
    OpenCV与AI深度学习 | 实战—使用YOLOv8图像分割实现路面坑洞检测(步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 实战篇——基于YOLOv8和OpenCV实现车速检测(详细步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 实战|OpenCV实时弯道检测(详细步骤+源码)
    查看>>
    OpenCV与AI深度学习 | 实用技巧 | 使用OpenCV进行模糊检测
    查看>>
    OpenCV与AI深度学习 | 实践教程|旋转目标检测模型-TensorRT 部署(C++)
    查看>>
    OpenCV与AI深度学习 | 工业缺陷检测中数据标注需要注意的几个事项
    查看>>
    OpenCV与AI深度学习 | 干货 | 深度学习模型训练和部署的基本步骤
    查看>>
    OpenCV与AI深度学习 | 手把手教你用Python和OpenCV搭建一个半自动标注工具(详细步骤 + 源码)
    查看>>
    OpenCV与AI深度学习 | 水下检测+扩散模型:或成明年CVPR最大惊喜!
    查看>>
    OpenCV与AI深度学习 | 深入浅出了解OCR识别票据原理
    查看>>
    OpenCV与AI深度学习 | 深度学习检测小目标常用方法
    查看>>
    OpenCV与AI深度学习 | 超越YOLOv10/11、RT-DETRv2/3!中科大D-FINE重新定义边界框回归任务
    查看>>
    OpenCV与AI深度学习 | 高效开源的OCR工具:Surya-OCR介绍与使用
    查看>>
    OpenCV与AI深度学习|16个含源码和数据集的计算机视觉实战项目(建议收藏!)
    查看>>
    Opencv中KNN背景分割器
    查看>>
    OpenCV中基于已知相机方向的透视变形
    查看>>