0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

error_page和proxy 指令有什么关系

阿铭linux 来源:未知 作者:程林 2018-07-28 08:28 次阅读

▌proxy_intercept_errors

当上游服务器响应头回来后,可以根据响应状态码的值进行拦截错误处理,与error_page 指令相互结合。用在访问上游服务器出现错误的情况下。

error_page和proxy 指令有什么关系

服务部署情况

一、主服务(nginx:80) , /usr/local/nginx/sbin/nginx

二、上游服务(nginx:8012), /usr/local/nginx_8012/nginx

上游服务器文件说明

error_page和proxy 指令有什么关系

404.html 和 404_default.html 内容:

error_page和proxy 指令有什么关系

04.html:上游服务器提供的特定404页面内容,当nginx:80访问上游服务器资源不存在(返回404),要求显示的内容页面。404_default.html:上游服务器默认404页面。50x.html:上游服务器提供的特定50x页面内容,当nginx:80访问上游服务器出现50x错误(包含500, 502, 503和504),要求显示的内容页面。50x_default.html:上游服务器提供的处理50x的默认页面

注意:

404.html 和 50x.html 是给 nginx:80配置中使用的

404_default.html 和 50x_default.html是给 nginx:8012配置中使用的

nginx:80服务中关于404和50x的配置

error_page和proxy 指令有什么关系

nginx:8012服务中关于404和50x的配置

error_page和proxy 指令有什么关系

几种配置

一、nginx:80服务的特定location配置

1). 开启proxy_intercept_errors2). 设置特定的 error_page, 分别处理404和50x

配置如下

error_page和proxy 指令有什么关系

@404fallback 和 @50xfallback配置见

请求测试:

当通过nginx:80服务请求上游一个不存在的资源时,响应的结果如下:

error_page和proxy 指令有什么关系

结果进行说明:

1、由于上游服务器的配置

add_header Cache-Control max-age=5;

add_header Content-Encoding gzip;

所以响应头包含Cache-Control 和gzip头。

2、由于nginx:80配置,当出现404时,具体内容要从上游服务器获取。

@404fallback的配置

所以响应的内容为:

Upstream server provides a special page for representing 404.

二、上述配置不变,修改@404fallback中的资源名称

(由404.html修改为 404_not_exists.html)

error_page和proxy 指令有什么关系

这个资源在上游服务器文件列表中并不存在

在执行请求测试时,结果如下:

error_page和proxy 指令有什么关系

对结果进行说明:

1、由于请求的 nginx:8012服务器下的 /404_not_exists.html,该资源并不存在,所以没有匹配nginx:8012中的location / {xxx} 配置(见图1-3)。所以响应头没有再增加 Cache-Control 和 gzip。

2、走到了nginx:8012的404处理流程中,所以响应内容如下,是404_default.html的内容。

Upstream default 404 page.

三、测试error_page的不同位置

1). 关闭nginx:80 location中的error_page指令

2). 为nginx:80在server级别设置error_page指令,分别设置404和50x

error_page和proxy 指令有什么关系

测试结果与一、相同

error_page和proxy 指令有什么关系

注意没有测试修改@fallback内部的资源不存在的情况。后续再补充

四、关于error_page 的其他功能说明

1、修改error_page为:

error_page和proxy 指令有什么关系

执行测试结果为:

结果说明:

a、这种写法可以修改响应头的状态码。即可以将404或者其他5xx状态码修改为200。不填写默认值是200

b、注意:等号与@404fallback之间有一个空格

c、上述配置与将 error_page 修改为 error_page 404 =200 @404fallback; 效果一样

2、修改响应状态码为指定值。比如301,302等

error_page和proxy 指令有什么关系

测试结果:

error_page和proxy 指令有什么关系

总结

1、可以在特定location中将proxy_intercept_errors开启,来处理上游服务器的特定响应状态码。并获取自定义错误页面的内容,同时在不改变用户请求url的情况下,进行内容的展现。

2、可以结合error_page 来改变响应状态码。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    8088

    浏览量

    82433
  • 指令
    +关注

    关注

    1

    文章

    577

    浏览量

    35367
  • 配置
    +关注

    关注

    1

    文章

    184

    浏览量

    18162

原文标题:结合nginx源码学习error_page和proxy 指令的关系

文章出处:【微信号:aming_linux,微信公众号:阿铭linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ARM和AVR什么关系

    ARM和AVR什么关系非常迷茫,或者是是什么样的联系
    发表于 05-20 14:50

    请问LCD的WriteCmd()(写指令)和WriteData()(写数据)什么关系

    WriteCmd()(写指令)和WriteData()(写数据)什么关系????
    发表于 03-12 02:51

    stm8a和EMI什么关系

    关于stm8a的EMI什么关系?以上来自于谷歌翻译以下为原文 What's matter about EMI of stm8a?
    发表于 04-29 14:33

    请问UcosII和UcGUI什么关系?

    Ucos和ucgui什么关系?如果要用ucGUI的话是不是必须先移植UCos?
    发表于 08-29 04:35

    TIIS和安塞尔对ICSP引脚的设置什么关系

    嗨,TIIS和安塞尔对ICSP引脚的设置什么关系?我不使用ICSPDAT和CLK引脚用于其他任何东西(即,不被用作端口引脚)-那么对于那些引脚设置什么TRIS/ANSEL什么关系
    发表于 05-06 13:27

    电机的极数和转速什么关系

    电机的极数和转速什么关系 如何退出运行的无铭牌电动机的极数
    发表于 02-25 07:33

    舵机与伺服电机什么关系?舵机的内部构造哪些?

    舵机与伺服电动机的区别在什么地方呢?舵机与伺服电机什么关系?舵机的内部构造哪些?
    发表于 07-13 06:36

    MCU、DSP和FPGA什么关系

    为什么MCU、DSP和FPGA会同时存在呢?MCU、DSP和FPGA什么关系
    发表于 09-22 08:39

    ARM与STM32之间什么关系

    ARM是什么?STM32又是什么?ARM与STM32之间什么关系
    发表于 10-15 06:04

    Cortex-M4内核与STM32之间什么关系

    Cortex-M4内核与STM32之间什么关系
    发表于 10-22 08:40

    固件库是什么?与寄存器什么关系

    固件库是什么?与寄存器什么关系
    发表于 11-25 08:43

    启动代码和Bootloader什么关系

    什么是启动代码?启动代码何用?什么是Bootloader? 启动代码和Bootloader什么关系吗?
    发表于 11-26 06:30

    flash跟EEPROM之间什么关系

    flash跟EEPROM之间什么关系
    发表于 01-29 20:24

    请问abstract command和指令集中的lw指令什么关系

    在看Openocd的代码发现,在写内存过程中,通过将abstract command写入到DM模块的command寄存器中,就能实现将数据写入内存,我想问这个abstract command和指令集中的lw指令
    发表于 08-16 06:59

    窗函数对FFT什么影响?他们是什么关系

    窗函数对FFT什么影响?他们是什么关系?在visualStudio软建中,要对音频信号进行FFT变换时,需要加窗函数进行控制,这是为什么?窗函数对FFT什么影响?窗函数是起到截取数据大小作用还是起到插零的作用?
    发表于 11-30 06:24