1. 程式人生 > 其它 >nginx 直接返回文字或json

nginx 直接返回文字或json

  有些時候請求某些介面的時候需要返回指定的文字字串或者json字串,如果邏輯非常簡單或者乾脆是固定的字串,那麼可以使用nginx快速實現,這樣就不用編寫程式響應請求了,可以減少伺服器資源佔用並且響應效能非常快

  先看返回固定的文字和json,都是在server中配置location攔截即可,配置示例如下:

  固定文字:

location ~ ^/get_text {
    default_type text/html;
    return 200 'This is text!';  
}

  固定json:

location ~ ^/get_json {
    default_type application/json;
    return 200 '{"status":"success","result":"nginx json"}';
}

  儲存後重新載入配置即可生效,注意:default_type必須要新增,否則瀏覽器會當成不識別的檔案進行下載

  另外也可以簡單的根據請求的URL返回不同的字串,示例如下:

location ~ ^/get_text/article/(.*)_(\d+).html$ {
    default_type text/html;
    set $s $1;
    set $d $2;
    return 200 str:$s$d;
}

  這樣可以簡單擷取url中的字串,當然也可以用(.*)匹配所有的,實際中根據不同需求定義即可

  上面的就是一些簡單的案例,在伺服器環境中對於簡單的處理,充分使用nginx可以省去一些程式設計工作

  另外補充一下中文顯示的問題,因為Linux下采用的是utf-8的字元編碼,預設情況下我們的瀏覽器在伺服器沒有指定編碼或者靜態頁面沒有宣告編碼的情況下會以GBK的編碼去渲染頁面,這樣預設情況下返回中文的話瀏覽器用gbk來解析utf-8編碼,顯然會出現亂碼,這時要在nginx location塊中主動新增header來輸出正確編碼,新增內容為:add_header Content-Type'text/html; charset=utf-8';這樣瀏覽器就知道我們使用的是哪種編碼了,如下圖:

  

  或者把add_header這行換成charset utf-8;也是可以的