博客
关于我
结合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/

    你可能感兴趣的文章
    Netty心跳检测机制
    查看>>
    Netty核心模块组件
    查看>>
    Netty框架内的宝藏:ByteBuf
    查看>>
    Netty框架的服务端开发中创建EventLoopGroup对象时线程数量源码解析
    查看>>
    Netty源码—2.Reactor线程模型一
    查看>>
    Netty源码—3.Reactor线程模型三
    查看>>
    Netty源码—4.客户端接入流程一
    查看>>
    Netty源码—4.客户端接入流程二
    查看>>
    Netty源码—5.Pipeline和Handler一
    查看>>
    Netty源码—5.Pipeline和Handler二
    查看>>
    Netty源码—6.ByteBuf原理一
    查看>>
    Netty源码—6.ByteBuf原理二
    查看>>
    Netty源码—7.ByteBuf原理三
    查看>>
    Netty源码—7.ByteBuf原理四
    查看>>
    Netty源码—8.编解码原理一
    查看>>
    Netty源码—8.编解码原理二
    查看>>
    Netty源码解读
    查看>>
    Netty的Socket编程详解-搭建服务端与客户端并进行数据传输
    查看>>
    Netty相关
    查看>>
    Netty遇到TCP发送缓冲区满了 写半包操作该如何处理
    查看>>