我有一个文件夹中的备忘录集合 一个/memos/items/备忘录用于包含 HTML 标题部分的 SSI 包含语句,直到并包括开头<body>,然后是备忘录内容的 HTML 代码,最后是进一步的 SSI 包括包含关闭 HTML 文档的代码的页脚的语句,如下所示:
<!--# include file="/memos/header.html" -->
Dies ist ein <i>Testeintrag</i>.
<blockquote>
Man soll den Tag
nicht vor dem Abend loben
</blockquote>
<!--# include file="/memos/footer.html" -->
Run Code Online (Sandbox Code Playgroud)
这很有效,但我不喜欢单项文件中的 SSI 语句。我更愿意指示 nginx 自动提供页眉和页脚,配置类似于
location ~ /memos/[\w-]+$ {
sendfile /memos/before.html;
sendfile $request_filename;
sendfile /memos/after.html;
}
Run Code Online (Sandbox Code Playgroud)
这可能吗?是否有一个 nginx 模块提供了一个sendfile像描述的那样工作的指令?
优点是:
grep编辑文件夹。编辑 (2016/07/01)
同时,我通过简单地改变视角,找到了具有上述优点的 SSI 解决方案(即仅提供项目文件内容,没有 ssi 标签):而不是在每个单独的项目文件中包含页眉和页脚,我包括单个主模板中的项目文件。
受到nginx 站点上的提议的启发;我配置
location /memos/ {
ssi on;
default_type text/html;
location ~ /memos/([\w-]+)$ {
set $inc /memos/items/$1;
rewrite ^ /memos/template.html break;
}
}
Run Code Online (Sandbox Code Playgroud)
并$inc在 master 中使用变量template.html:
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8">
...
</head>
<body>
<div id="content">
<!--# include file="$inc" -->
</div>
<script src="main.js"></script>
<script src="items.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
但是,我不会关闭这个主题,因为我仍然对原始问题感兴趣,是否可以指示 nginx 将一个响应组合为多个文件的序列。
小智 1
您可以使用附加模块 ( ngx_http_addition_module),该模块需要在构建时启用 ( --with-http_addition_module):
location / {\n add_before_body /before_action;\n add_after_body /after_action;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n请注意,它不允许堆叠任意数据,而是提供在主响应之前和之后添加内容的功能。可以通过使用带有另一个加法指令的位置来堆叠加法调用add_*_body,但我还没有尝试过 \xe2\x80\x93 ,它肯定会降低配置的可读性。
| 归档时间: |
|
| 查看次数: |
2711 次 |
| 最近记录: |