Nginx
使用 gzip 提供靜態文件時強制 Nginx 發送 Content-Length 標頭
我們正在執行 Nginx 0.7.65
$$ -1ubuntu2.3 $$. 我剛剛注意到,在使用
alias
指令提供本地靜態文件時gzip on
,並Content-Length
沒有發送標頭。由於它從本地文件系統提供文件,因此獲取長度應該沒有任何問題。如何強制 Nginx 發送Content-Length
帶有這些文件的標頭?
事實證明,當使用動態 Gzip時,
Content-Length
不會發送標頭,Transfer-Encoding
因為chunked
. 預壓縮我的文件並切換到靜態 Gzip可以讓 Nginx 提前知道文件大小並發送適當的Content-Length
標頭。
這是添加標頭的高性能 Nginx 解決方案
x-file-size
:https://github.com/AnthumChris/fetch-progress-indicators/issues/13
## Nginx Lua module must be installed https://docs.nginx.com/nginx/admin-guide/dynamic-modules/lua/ ## https://github.com/openresty/lua-nginx-module#header_filter_by_lua header_filter_by_lua_block { function file_len(file_name) local file = io.open(file_name, "r") if (file == nil) then return -1 end local size = file:seek("end") file:close() return size end ngx.header["X-File-Size"] = file_len(ngx.var.request_filename); }