Nginx 操作響應頭信息的實現


前置條件:需要編譯 ngx_http_headers_module 模塊,才支持 header 頭信息操作

add_header

意思為將自定義的頭信息的添加到響應頭,指令為 add_header name value [always];,可以用在 http {}, server {}, location {}, if in location {} 上下文中,
只有當響應狀態碼等於 200, 201 (1.3.10), 204, 206, 301, 302, 303, 304, 307 (1.1.16, 1.0.13), 或 308 (1.13.0) 時生效,如果 always 參數指定了,頭信息將無視狀態碼,在所有響應中強制返回。

注意: 可以聲明多個 add_header 指令,當且僅當 當前區塊沒有 add_header 的時候,才會繼承上級聲明的 add_header 信息

例如:

server {
add_header a 123;

location / {
root /path;
}

location /download/ {
add_header b 321;
}
}

如上的例子,在訪問 /download/ 路由的時候,將返回 b 321 這樣的頭信息,而訪問 / 路由時,將返回上級指定的 a 123 頭信息。

add_trailer

意思為將自定義的頭信息添加到響應頭的末尾,指令為 add_trailer name value [always];,可以用在 http {}, server {}, location {}, if in location {} 上下文中,只有當響應狀態碼等於 200, 201, 206, 301, 302, 303, 307, 或 308 時生效,如果 always 參數指定了,頭信息將無視狀態碼,在所有響應中強制返回。

注意: 可以聲明多個 add_trailer 指令,當且僅當 當前區塊沒有 add_trailer 的時候,才會繼承上級聲明的 add_trailer 信息

舉例參考 add_header 的例子。

expires

啟用或禁用,添加或修改響應頭中的 "Expires" 和 "Cache-Control" 字段,指令為 expires [modified] time; 或者 expires epoch | max | off; 當響應狀態碼等於200, 201 (1.3.10), 204, 206, 301, 302, 303, 304, 307 (1.1.16, 1.0.13), 或 308 (1.13.0) 時生效,time 參數可以為正時間或者負時間。"Expires" 字段中的時間計算為當前時間和在 time 中指定的時間總和。如果使用該 modified 參數(0.7.0,0.6.32),則將時間計算為文件修改時間與 time 指令中指定的時間之和。

此外,可以使用 "@" 前綴(0.7.9,0.6.34)指定一天中的時間:expires @15h30m;

"Cache-Control" 字段的內容取決於指定時間的符號:

  • 時間為負數 - "Cache-Control: no-cache"
  • 時間為正數或者0 - "Cache-Control: max-age=t" t 是指令中指定的時間,以秒為單位

epoch 參數將 "Expires" 設置為值 "Thu, 01 Jan 1970 00:00:01 GMT",將"Cache-Control" 設置為 "no-cache"。

max 參數將 "Expires" 設置為值 "Thu, 31 Dec 2037 23:55:55 GMT",將"Cache-Control" 設置為 10 年。

off 參數禁用添加或修改 "Expires" 和 "Cache-Control" 響應頭字段。

最后一個參數值可以包含變量(1.7.9): 例如:

map $sent_http_content_type $expires {
default   off;
application/pdf 42d;
~image/   max;
}

expires $expires;

您可能感興趣的文章:

文章同步發布: https://www.geek-share.com/detail/2770037882.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM