博客
关于我
结合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.html和50x.html是用于Nginx:80服务的配置,而404_default.html和50x_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.html为404_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_errors和error_page模块,可以实现对上游服务器返回的404和50x错误页面的自定义处理。这种方式不仅可以美化错误页面,还可以通过修改响应状态码来优化用户体验。

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

    你可能感兴趣的文章
    PYTHON--欧拉习题二
    查看>>
    python--高级应用总结
    查看>>
    python-520表白代码,我看谁说程序员不懂浪漫,送你几套表白代码,一步到位
    查看>>
    Python-Asyncio TypeError:无法在‘;等待‘;表达式中使用对象DICT
    查看>>
    Python-AttributeError:‘;dict&39;对象没有属性‘;序列‘;
    查看>>
    Python-ldap:是否可以在不显式写入密码的情况下进行绑定?
    查看>>
    python出现 unknown encoding: idna 的处理方法
    查看>>
    Python出现 RuntimeError: dictionary changed size during iteration 的解决方法
    查看>>
    Python-numpy(2)数组的操作
    查看>>
    Python-Numpy的tile函数用法
    查看>>
    python-open函数
    查看>>
    Python-Pandas-将特定函数应用于给定级别-多索引数据框架
    查看>>
    python-queue队列通信
    查看>>
    python-ros No module named PyKDL
    查看>>
    python-social-auth 是否需要会话
    查看>>
    Python再获年度编程语言,微软或成最大赢家
    查看>>
    python-week5
    查看>>
    Python写表情包搜索工具(非常详细)零基础入门到精通,收藏这一篇就够了
    查看>>
    Python-【1】配置
    查看>>
    Python-从子文件夹执行绝对导入
    查看>>