0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

error_page和proxy 指令有什么關(guān)系

阿銘linux ? 來(lái)源:未知 ? 作者:程林 ? 2018-07-28 08:28 ? 次閱讀

▌proxy_intercept_errors

當(dāng)上游服務(wù)器響應(yīng)頭回來(lái)后,可以根據(jù)響應(yīng)狀態(tài)碼的值進(jìn)行攔截錯(cuò)誤處理,與error_page 指令相互結(jié)合。用在訪問(wèn)上游服務(wù)器出現(xiàn)錯(cuò)誤的情況下。

error_page和proxy 指令有什么關(guān)系

服務(wù)部署情況

一、主服務(wù)(nginx:80) , /usr/local/nginx/sbin/nginx

二、上游服務(wù)(nginx:8012), /usr/local/nginx_8012/nginx

上游服務(wù)器文件說(shuō)明

error_page和proxy 指令有什么關(guān)系

404.html 和 404_default.html 內(nèi)容:

error_page和proxy 指令有什么關(guān)系

04.html:上游服務(wù)器提供的特定404頁(yè)面內(nèi)容,當(dāng)nginx:80訪問(wèn)上游服務(wù)器資源不存在(返回404),要求顯示的內(nèi)容頁(yè)面。404_default.html:上游服務(wù)器默認(rèn)404頁(yè)面。50x.html:上游服務(wù)器提供的特定50x頁(yè)面內(nèi)容,當(dāng)nginx:80訪問(wèn)上游服務(wù)器出現(xiàn)50x錯(cuò)誤(包含500, 502, 503和504),要求顯示的內(nèi)容頁(yè)面。50x_default.html:上游服務(wù)器提供的處理50x的默認(rèn)頁(yè)面

注意:

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

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

nginx:80服務(wù)中關(guān)于404和50x的配置

error_page和proxy 指令有什么關(guān)系

nginx:8012服務(wù)中關(guān)于404和50x的配置

error_page和proxy 指令有什么關(guān)系

幾種配置

一、nginx:80服務(wù)的特定location配置

1). 開啟proxy_intercept_errors2). 設(shè)置特定的 error_page, 分別處理404和50x

配置如下

error_page和proxy 指令有什么關(guān)系

@404fallback 和 @50xfallback配置見

請(qǐng)求測(cè)試:

當(dāng)通過(guò)nginx:80服務(wù)請(qǐng)求上游一個(gè)不存在的資源時(shí),響應(yīng)的結(jié)果如下:

error_page和proxy 指令有什么關(guān)系

結(jié)果進(jìn)行說(shuō)明:

1、由于上游服務(wù)器的配置

add_header Cache-Control max-age=5;

add_header Content-Encoding gzip;

所以響應(yīng)頭包含Cache-Control 和gzip頭。

2、由于nginx:80配置,當(dāng)出現(xiàn)404時(shí),具體內(nèi)容要從上游服務(wù)器獲取。

@404fallback的配置

所以響應(yīng)的內(nèi)容為:

Upstream server provides a special page for representing 404.

二、上述配置不變,修改@404fallback中的資源名稱

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

error_page和proxy 指令有什么關(guān)系

這個(gè)資源在上游服務(wù)器文件列表中并不存在

在執(zhí)行請(qǐng)求測(cè)試時(shí),結(jié)果如下:

error_page和proxy 指令有什么關(guān)系

對(duì)結(jié)果進(jìn)行說(shuō)明:

1、由于請(qǐng)求的 nginx:8012服務(wù)器下的 /404_not_exists.html,該資源并不存在,所以沒(méi)有匹配nginx:8012中的location / {xxx} 配置(見圖1-3)。所以響應(yīng)頭沒(méi)有再增加 Cache-Control 和 gzip。

2、走到了nginx:8012的404處理流程中,所以響應(yīng)內(nèi)容如下,是404_default.html的內(nèi)容。

Upstream default 404 page.

三、測(cè)試error_page的不同位置

1). 關(guān)閉nginx:80 location中的error_page指令

2). 為nginx:80在server級(jí)別設(shè)置error_page指令,分別設(shè)置404和50x

error_page和proxy 指令有什么關(guān)系

測(cè)試結(jié)果與一、相同

error_page和proxy 指令有什么關(guān)系

注意沒(méi)有測(cè)試修改@fallback內(nèi)部的資源不存在的情況。后續(xù)再補(bǔ)充

四、關(guān)于error_page 的其他功能說(shuō)明

1、修改error_page為:

error_page和proxy 指令有什么關(guān)系

執(zhí)行測(cè)試結(jié)果為:

結(jié)果說(shuō)明:

a、這種寫法可以修改響應(yīng)頭的狀態(tài)碼。即可以將404或者其他5xx狀態(tài)碼修改為200。不填寫默認(rèn)值是200

b、注意:等號(hào)與@404fallback之間有一個(gè)空格

c、上述配置與將 error_page 修改為 error_page 404 =200 @404fallback; 效果一樣

2、修改響應(yīng)狀態(tài)碼為指定值。比如301,302等

error_page和proxy 指令有什么關(guān)系

測(cè)試結(jié)果:

error_page和proxy 指令有什么關(guān)系

總結(jié)

1、可以在特定location中將proxy_intercept_errors開啟,來(lái)處理上游服務(wù)器的特定響應(yīng)狀態(tài)碼。并獲取自定義錯(cuò)誤頁(yè)面的內(nèi)容,同時(shí)在不改變用戶請(qǐng)求url的情況下,進(jìn)行內(nèi)容的展現(xiàn)。

2、可以結(jié)合error_page 來(lái)改變響應(yīng)狀態(tài)碼。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8866

    瀏覽量

    84962
  • 指令
    +關(guān)注

    關(guān)注

    1

    文章

    604

    瀏覽量

    35584
  • 配置
    +關(guān)注

    關(guān)注

    1

    文章

    187

    瀏覽量

    18323

原文標(biāo)題:結(jié)合nginx源碼學(xué)習(xí)error_page和proxy 指令的關(guān)系

文章出處:【微信號(hào):aming_linux,微信公眾號(hào):阿銘linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ARM9和STM32什么關(guān)系?

    小伙伴問(wèn):ARM9和STM32什么關(guān)系?
    發(fā)表于 12-19 11:06 ?1972次閱讀

    ARM和AVR什么關(guān)系?

    ARM和AVR什么關(guān)系非常迷茫,或者是是什么樣的聯(lián)系
    發(fā)表于 05-20 14:50

    請(qǐng)問(wèn)LCD的WriteCmd()(寫指令)和WriteData()(寫數(shù)據(jù))什么關(guān)系

    WriteCmd()(寫指令)和WriteData()(寫數(shù)據(jù))什么關(guān)系????
    發(fā)表于 03-12 02:51

    stm8a和EMI什么關(guān)系?

    關(guān)于stm8a的EMI什么關(guān)系?以上來(lái)自于谷歌翻譯以下為原文 What's matter about EMI of stm8a?
    發(fā)表于 04-29 14:33

    請(qǐng)問(wèn)UcosII和UcGUI什么關(guān)系?

    Ucos和ucgui什么關(guān)系?如果要用ucGUI的話是不是必須先移植UCos?
    發(fā)表于 08-29 04:35

    TIIS和安塞爾對(duì)ICSP引腳的設(shè)置什么關(guān)系

    嗨,TIIS和安塞爾對(duì)ICSP引腳的設(shè)置什么關(guān)系?我不使用ICSPDAT和CLK引腳用于其他任何東西(即,不被用作端口引腳)-那么對(duì)于那些引腳設(shè)置什么TRIS/ANSEL什么關(guān)系
    發(fā)表于 05-06 13:27

    電機(jī)的極數(shù)和轉(zhuǎn)速什么關(guān)系

    電機(jī)的極數(shù)和轉(zhuǎn)速什么關(guān)系 如何退出運(yùn)行的無(wú)銘牌電動(dòng)機(jī)的極數(shù)
    發(fā)表于 02-25 07:33

    MCU、DSP和FPGA什么關(guān)系

    為什么MCU、DSP和FPGA會(huì)同時(shí)存在呢?MCU、DSP和FPGA什么關(guān)系?
    發(fā)表于 09-22 08:39

    ARM與STM32之間什么關(guān)系

    ARM是什么?STM32又是什么?ARM與STM32之間什么關(guān)系?
    發(fā)表于 10-15 06:04

    啟動(dòng)代碼和Bootloader什么關(guān)系

    什么是啟動(dòng)代碼?啟動(dòng)代碼何用?什么是Bootloader? 啟動(dòng)代碼和Bootloader什么關(guān)系嗎?
    發(fā)表于 11-26 06:30

    flash跟EEPROM之間什么關(guān)系?

    flash跟EEPROM之間什么關(guān)系?
    發(fā)表于 01-29 20:24

    請(qǐng)問(wèn)abstract command和指令集中的lw指令什么關(guān)系?

    在看Openocd的代碼發(fā)現(xiàn),在寫內(nèi)存過(guò)程中,通過(guò)將abstract command寫入到DM模塊的command寄存器中,就能實(shí)現(xiàn)將數(shù)據(jù)寫入內(nèi)存,我想問(wèn)這個(gè)abstract command和指令集中的lw指令
    發(fā)表于 08-16 06:59

    LED的亮度與PWM什么關(guān)系詳細(xì)代碼說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是LED的亮度與PWM什么關(guān)系詳細(xì)代碼說(shuō)明。
    發(fā)表于 08-01 17:34 ?13次下載
    LED的亮度與PWM<b class='flag-5'>有</b><b class='flag-5'>什么關(guān)系</b>詳細(xì)代碼說(shuō)明

    USB接口與雷電接口什么關(guān)系?

    USB接口和雷電接口什么關(guān)系?
    的頭像 發(fā)表于 01-13 16:34 ?1.8w次閱讀

    FPGA中Bank和Clock Region之前有什么關(guān)系?

    FPGA中的Bank和Clock Region什么關(guān)系?
    的頭像 發(fā)表于 05-15 09:32 ?1071次閱讀
    FPGA中Bank和Clock Region之前有<b class='flag-5'>什么關(guān)系</b>?