Nginx服务器配置支持ssi包含文件及动态包含
SSI (Server Side Includes) 可以实现多页面静态内容的局部整体更新,Nginx的HttpSsiModule模块提供SSI支持,普通应用主要有三个参数:
ssi
ssi_silent_errors
ssi_types
这三个参数均可以放在http,server或location的作用域里面。
ssi on
开启ssi支持,默认是off
ssi_silent_errors on
默认值是off,开启后 当被include的文件不存在或者处理SSI文件出错时不输出"[an error occurred while processing the directive]"的错误提示。
ssi_types
默认是ssi_types text/html,如果需要htm和html支持,则不需要设置这句,如果需要shtml支持,则需要设置:ssi_types text/shtml
代码里面ssi的引用文件的方式:
<!--#include file="fcbu_com.html"-->
或用虚拟路径的方式:
<!--#include virtual="/test/fcbu_com.html"-->
路径是相对server中root根目录。
实例:
开启shtml后缀的文件名支持ssi
server{
ssi on;
ssi_silent_errors on;
ssi_types text/shtml;
}
开启html后缀的文件名支持ssi
server{
ssi on;
ssi_silent_errors on;
}
只在fcbu_com目录下开启shtml后缀的文件名支持ssi
server{
location /fcbu_com/{
ssi on;
ssi_types text/shtml;
ssi_silent_errors on;
}
}
动态内容包含
在HTML页面中可以通过以下命令包含另一个包含动态内容的页面:
<!--# include virtual="/test.php" >
如果需要将参数传递给动态页面,引用nginx的环境变量,如:
<!--# include virtual="/test2.php?$QUERY_STRING" >
假如包含以上代码的页面是index.shtml, 当访问http://www.fcbu.com/index.shtml?category=5&page=3, 则包含的页面相当于/test2.php?category=5&page=3.
更多说明可以请参见官方文档:http://wiki.nginx.org/NginxChsHttpSsiModule