平时如果我们添加一些信息,比如 title,只需要编辑站点文件即可。但是有时候这个站点要是动态的,我们就无能为力。就此 Nginx 提供了一个模块,向响应内容中添加额外的信息,以达到所需的效果
如果以前看过本站文章的人,一定知道本站曾经搭建过一个下载站点,这个下载站点使用了 Nginx 的 autoindex 插件,可以显示整个文件夹,并且可以直观的看到文件列表。
nginx 的配置文件如下
location / { # 开启索引 autoindex on; # 列表显示格式 autoindex_format html; # 关闭文件详细大小 autoindex_exact_size off; # 列表显示本地时间 autoindex_localtime on; }
但是作为一个站点,我们应该添加个标题和 logo 对吧?然而实际信息却没有编辑的地方。当时只能放弃。
近期查阅 nginx 配置文档,发现有两条配置命令可以实现这个效果
location / { # 添加头部脚部信息 add_before_body /.site/header.html; add_after_body /.site/footer.html; addition_types mime-type text/html; }
这两条配置命令所属的模块是 ngx_http_addition_module,意义是用 nginx 向响应内容中添加额外信息,如果自行编译默认该模块不安装。
add_before_body 是在网站内容最前添加的信息,add_after_body 是在网站内容最后添加的信息,addition_types 是指定添加信息的 MIME 类型,默认是 text/html(两种写法,不带"mime-type"字段为老版本兼容命令)
追加的信息是纯文本,也可以追加图片等其他类型。在此我就直接追加以前打算添加的纯文本。(具体实际情况可以访问 StarryVoid - Downloads 查看)
实际上,这个模块属于 subrequest 这种设计模式,通过子请求得到数据,多余信息可以查看
https://www.nginx.com/resources/wiki/extending/api/http/?highlight=addition#ngx-http-subrequest