配置

SSI (Server Side Includes) 可以实现静态内容的局部更新,Nginx的HttpSsiModule提供SSI支持, 最简单的配置如下:

location ~* \.shtml$ {
      ssi on;
      ssi_silent_errors off;
}

在HTML页面中可以通过以下命令包含另一个包含动态内容的页面:

<!--# include virtual="/login.php" -->

如果需要将参数传递给动态页面,引用nginx的环境变量,如:

<!--# include virtual="/news_list.php?$QUERY_STRING" -->

假如包含以上代码的页面是index.shtml, 当访问http://yourdomain.com/path/to/index.shtml?category=2&page=3, 则包含的页面相当于/news_list.php?category=2&page=3.

编码问题

如果遇到类似xavier遇到的编码问题,需要确保文件及被包含文件的编码是一致的,并将Nginx的charset配置为对应编码,如UTF-8:

http {
   charset utf-8;
}

参考

http://wiki.nginx.org/HttpSsiModule
http://en.wikipedia.org/wiki/Server_Side_Includes
http://wiki.nginx.org/HttpCharsetModule