前言
开发网站的过程中,我们通常会把详情页等做静态化处理,这样会大大的提高访问速率。特别是很多cms系统,默认都支持生成静态页。但是,静态页方案有个比较尴尬的问题,就是当网站头部或者底部做更改的时候,哪怕是很小的更改,只改一个字,我们也需要重新生成所有的静态页,这对于数据量稍微大点的系统是个灾难。
幸好,nginx ssi解决了这个问题。
什么是nginx ssi
Server Side Include,通常称为服务器端嵌入。nginx ssi可以动态的将页面进行组合。例如:
<html>
<head>
<title>ssi实战</title>
<meta charset="utf-8" />
</head>
<body>
<!-- 引入头部 -->
<!--# include file="header.html" -->
我是首页<br />
<!-- 引入尾部 -->
<!--# include file="footer.html" -->
</body>
</html>
这样,只要更新header.html和footer.html便可动态更新所有的页面了。
配置ssi
ssi的配置十分简单,不需要安装额外的模块,nginx默认支持。可以在http,server,location模块配置。

ok,就这么简单,ssi配置好了。
我们只需要在模板文件中,使用ssi语法include引入对应的文件即可。
index.html

header.html(跟index.html同级目录)
![]()
footer.html(跟index.html同级目录)
![]()
这样,页面返回给客户端前,nginx会自动组装好页面再返回。
注意:
<!–#include file=”文件名称”–>
<!–#include virtual=”文件名称”–>
file: 文件名是一个相对路径,该路径相对于使用 #include 指令的文档所在的目录。被包含文件可以在同一级目录或其子目录中,但不能在上一级目录中。如表示当前目录下的的nav_head.htm文档,则为 file=”nav_head.htm”。
virtual :文件名是 Web 站点上的虚拟目录的完整路径。如表示相对于服务器文档根目录下hoyi目录下的nav_head.htm文件;则为virtual=”/hoyi/nav_head.htm”
