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

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

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

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

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

▌proxy_intercept_errors

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

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

服務(wù)部署情況

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

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

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

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

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

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

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

注意:

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配置見

請求測試:

當通過nginx:80服務(wù)請求上游一個不存在的資源時,響應(yīng)的結(jié)果如下:

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

結(jié)果進行說明:

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

add_header Cache-Control max-age=5;

add_header Content-Encoding gzip;

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

2、由于nginx:80配置,當出現(xiàn)404時,具體內(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)系

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

在執(zhí)行請求測試時,結(jié)果如下:

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

對結(jié)果進行說明:

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

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

Upstream default 404 page.

三、測試error_page的不同位置

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

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

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

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

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

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

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

1、修改error_page為:

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

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

結(jié)果說明:

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

b、注意:等號與@404fallback之間有一個空格

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

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

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

測試結(jié)果:

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

總結(jié)

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

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

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

    關(guān)注

    12

    文章

    8959

    瀏覽量

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

    關(guān)注

    1

    文章

    606

    瀏覽量

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

    關(guān)注

    1

    文章

    187

    瀏覽量

    18341

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

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

收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

    請問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)系?以上來自于谷歌翻譯以下為原文 What's matter about EMI of stm8a?
    發(fā)表于 04-29 14:33

    請問UcosII和UcGUI什么關(guān)系?

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

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

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

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

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

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

    為什么MCU、DSP和FPGA會同時存在呢?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

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

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

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

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

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

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

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

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

    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 ?1103次閱讀
    FPGA中Bank和Clock Region之前有<b class='flag-5'>什么關(guān)系</b>?