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

本文共 1898 字,大约阅读时间需要 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/

    你可能感兴趣的文章
    NodeJS 导入导出模块的方法( 代码演示 )
    查看>>
    nodejs 开发websocket 笔记
    查看>>
    nodejs 的 Buffer 详解
    查看>>
    NodeJS 的环境变量: 开发环境vs生产环境
    查看>>
    nodejs 读取xlsx文件内容
    查看>>
    nodejs 运行CMD命令
    查看>>
    Nodejs+Express+Mysql实现简单用户管理增删改查
    查看>>
    nodejs+nginx获取真实ip
    查看>>
    nodejs-mime类型
    查看>>
    NodeJs——(11)控制权转移next
    查看>>
    NodeJS、NPM安装配置步骤(windows版本)
    查看>>
    NodeJS、NPM安装配置步骤(windows版本)
    查看>>
    nodejs下的express安装
    查看>>
    nodejs与javascript中的aes加密
    查看>>
    nodejs中Express 路由统一设置缓存的小技巧
    查看>>
    nodejs中express的使用
    查看>>
    Nodejs中搭建一个静态Web服务器,通过读取文件获取响应类型
    查看>>
    Nodejs中的fs模块的使用
    查看>>
    NodeJS使用淘宝npm镜像站的各种姿势
    查看>>
    NodeJs入门知识
    查看>>