色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

Nginx error_page自定義錯誤頁面設置過程

瀏覽:124日期:2023-03-13 15:37:50
目錄
  • Nginx error_page自定義錯誤頁面設置
  • Nginx error_page 使用
    • 1. error_page語法
    • 2. 實例
    • 3. Nginx 自定義404錯誤頁面配置中有無等號的區別
  • 總結

    Nginx error_page自定義錯誤頁面設置

    #fastcgi_intercept_errors on;
        #語法:fastcgi_intercept_errors on|off 
        #默認值:fastcgi_intercept_errors off 
        #使用字段:http, server, location 
        #這個指令指定是否傳遞4xx和5xx錯誤信息到客戶端,或者允許nginx使用error_page處理錯誤信息。
        #你必須明確的在error_page中指定處理方法使這個參數有效,正如Igor所說“如果沒有適當的處理方法,
        #nginx不會攔截一個錯誤,這個錯誤不會顯示自己的默認頁面,這里允許通過某些方法攔截錯誤。
    
    
        #proxy_intercept_errors 為on 表示 nginx按照原response
        #proxy_intercept_errors on|off 
        #proxy_intercept_errors off 
        #使用字段:http, server, location    #code輸出,后端是404,就是404.這個變量開啟后,我們才能自定義錯誤頁面。
    
    
        proxy_intercept_errors on;
    
        upstream dev1 {
    
    server 127.0.0.1:8080;  #HessianTest3
    
        }
    
        server {
    listen       80;
    server_name  kevin.com;
    
    
    
    location / {
        proxy_pass http://dev1;     #HessianTest3
    }
    
    #參考書本第40頁
    #error_page 404 =200 /404.html;
    #error_page 500 502 503 504  =200 /50x.html;
    
    #location = /404.html {
    #   root html;
    #   
    #}
    
    #location = /50x.html {
    #    root   html;
    #}
    
    #當頁面發生異常的時候可以指定跳轉到location中,也可以指定跳轉到指定的URL地址上面
    error_page 404 http://www.baidu.com/;
        }

    Nginx error_page 使用

    接觸到了error_page ,這里記錄一下

    1. error_page語法

    語法:

    error_page code [ code... ] [ = | =answer-code ] uri | @named_location

    默認值:

    no?

    使用字段:

    http, server, location, location 中的if字段 

    2. 實例

    nginx指令error_page的作用是當發生錯誤的時候能夠顯示一個預定義的uri,比如:

    error_page 502 503 /50x.html;
    location = /50x.html {
    ? ? root /usr/share/nginx/html;
    } ?

    這樣實際上產生了一個內部跳轉(internal redirect),當訪問出現502、503的時候就能返回50x.html中的內容,這里需要注意是否可以找到50x.html頁面,所以加了個location保證找到你自定義的50x頁面。

    同時我們也可以自己定義這種情況下的返回狀態嗎,比如:

    error_page 502 503 =200 /50x.html;
    location = /50x.html {
    ? ? root /usr/share/nginx/html;
    } ??

    這樣用戶訪問產生502 、503的時候給用戶的返回狀態是200,內容是50x.html。

    當error_page后面跟的不是一個靜態的內容的話,比如是由proxyed server或者FastCGI/uwsgi/SCGI server處理的話,server返回的狀態(200, 302, 401 或者 404)也能返回給用戶。

    error_page 404 = /404.php;
    location ~ \.php$ {
    ? ? fastcgi_pass 127.0.0.1:9000;
    ? ? fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    ? ? include fastcgi_params;
    } ??

    也可以設置一個named location,然后在里邊做對應的處理。

    error_page 500 502 503 504 @jump_to_error;
    location @jump_to_error { ? ?
    ? ? proxy_pass http://backend;
    }

    同時也能夠通過使客戶端進行302、301等重定向的方式處理錯誤頁面,默認狀態碼為302。

    error_page 403 ? ? ?http://example.com/forbidden.html;
    error_page 404 =301 http://example.com/notfound.html;

    同時error_page在一次請求中只能響應一次,對應的nginx有另外一個配置可以控制這個選項:recursive_error_pages

    默認為false,作用是控制error_page能否在一次請求中觸發多次。

    3. Nginx 自定義404錯誤頁面配置中有無等號的區別

    • error_page 404 /404.html 可顯示自定義404頁面內容,正常返回404狀態碼。
    • error_page 404 = /404.html 可顯示自定義404頁面內容,但返回200狀態碼。
    • error_page 404 /404.php 如果是動態404錯誤頁面,包含 header 代碼(例如301跳轉),將無法正常執行。正常返回404代碼。
    • error_page 404 = /404.php 如果是動態404錯誤頁面,包含 header 代碼(例如301跳轉),加等號配置可以正常執行,返回php中定義的狀態碼。但如果php中定義返回404狀態碼,404狀態碼可以正常返回,但無法顯示自定義頁面內容(出現系統默認404頁面),這種情況可以考慮用410代碼替代( header("HTTP/1.1 410 Gone"); 正常返回410狀態碼,且可正常顯示自定義內容)。

    例子

    server ?{
    ? ? listen 80;
    ? ? server_name ?test.com;
    ? ? index ? ? ? index.html index.htm;
    ?
    ? ? location / {?
    ? ? ? ? proxy_pass http://online;
    ? ? ? ? error_page 404 = @fallback;
    ? ? ? ? proxy_intercept_errors on;
    ? ? }
    ? ? location @fallback {
    ? ? ? ? proxy_pass http://backend;
    ? ? }
    }
    ?
    upstream online {
    ? ? ? ? ?server 192.168.88.18:80;
    ? ? ? ? ?server 192.168.88.28:80;
    }
    ?
    upstream backend {
    ? ? ? ? ?server 192.168.88.38:80;
    }

    例子

    由于在nginx配置中,設置了limit_req的流量限制,導致許多請求返回503錯誤代碼,在限流的條件下,為提高用戶體驗,希望返回正常Code 200,且返回操作頻繁的信息:

    location ?/test {
    ? ...?
    ? limit_req zone=zone_ip_rm burst=1 nodelay;?
    ? error_page 503 =200 /dealwith_503?callback=$arg_callback;
    }
    location /dealwith_503{?
    ? set $ret_body "{"code": "V00006","msg": "操作太頻繁了,請坐下來喝杯茶。"}";
    ? ?if ( $arg_callback != "" )?
    ? ?{?
    ? ? ? ?return 200 "try{$arg_callback($ret_body)}catch(e){}";?
    ? ?}?
    ? ?return 200 $ret_body;?
    }

    總結

    以上為個人經驗,希望能給大家一個參考,也希望大家多多支持。

    標簽: Nginx
    主站蜘蛛池模板: 国产区香蕉精品系列在线观看不卡 | 99久久国产综合精品成人影院 | 国产孕妇孕交视频 | 亚洲一区二区三区高清网 | 在线视频免费观看a毛片 | 久久99精品久久久久久久野外 | 日本一区二区三区不卡视频中文字幕 | 精品91精品91精品国产片 | 欧美2区 | 一区二区三区在线观看视频 | 久久视频这里只有精品 | 亚洲美女视频在线 | 男人好大好硬好爽免费视频 | 国产日韩久久久精品影院首页 | 欧美顶级毛片在线播放小说 | 高清精品女厕在线观看 | 亚洲毛片免费在线观看 | 色天使影院 | 亚洲综合色就色手机在线观看 | 98国内自拍在线视频 | 99热久久国产综合精品久久国产 | 一级特黄欧美 | 久久精品福利视频在线观看 | 九九re6精品视频在线观看 | 国产精品亚洲第一区柳州莫青 | 狼人久久尹人香蕉尹人 | 国产高清免费观看 | 久久久这里只有精品免费 | 免费在线观看一级毛片 | 国产欧美日韩精品第一区 | 成年人午夜影院 | 自怕偷自怕亚洲精品 | 欧美午夜在线观看理论片 | 久久99久久精品免费思思 | 中文日韩字幕 | 日韩免费一级 | 日韩在线视屏 | 在线观看国产一区二区三区99 | 久久精品免视看国产明星 | 亚洲综合在线观看视频 | 欧美视频一区在线 |