SSI是什么?Nginx如何开启SSI以支持shtml格式的网页?

Nginx  

SSI简介


Server Side Include : 服务器端嵌入

原理 : 将内容发送到浏览器之前,可以使用“服务器端包含 (SSI)”指令将文本、图形或应用程序信息包含到网页中。因为包含 SSI 指令的文件要求特殊处理,所以必须为所有 SSI 文件赋予 SSI文件扩展名。默认扩展名是 .stm、.shtm 和 .shtml

主要有以下几种用用途:

  1. 显示服务器端环境变量<#echo>

  2. 将文本内容直接插入到文档中<#include>

  3. 显示WEB文档相关信息<#flastmod #fsize> (如文件制作日期/大小等)

  4. 直接执行服务器上的各种程序<#exec>(如CGI或其他可执行程序)

  5. 设置SSI信息显示格式<#config>;(如文件制作日期/大小显示方式) 高级SSI<XSSI>;可设置变量使用if条件语句。


为什么用SSI?

  1. 一个登录用户在页面访问的时候如何充分利用 cache?

  2. 页面静态化的一个大问题是登录用户访问页面如何静态化。例如首页,大部分的页面内容需要缓存但是用户登录后的个人信息是动态信息,不能缓存。那么如何解决这个"页面部分缓存"问题?

  3. 现有的方案是利用 SSI - Server Side include 。

  4. 这里最关键的就是静态文件可以包含一个动态的网页的 URL 。



Nginx 如何开启 SSI


主要是三个参数,ssi,ssi_silent_errors和ssi_types,均可以放在http,server和location的作用域下。


ssi on

开启ssi支持,默认是off


ssi_silent_errors on

默认值是off,开启后在处理SSI文件出错时不输出错误提示:"[an error occurred while processing the directive] "


ssi_types 

默认是ssi_types text/html,所以如果需要htm和html支持,则不需要设置这句,如果需要shtml支持,则需要设置:ssi_types text/shtml


编辑 Nginx 配置文件

vi /usr/local/nginx/conf/nginx.conf


加入如下代码


1、开启shtml后缀的文件名支持ssi

server{

    ......

    ssi on;

    ssi_silent_errors on;

    ssi_types text/shtml;

}


2、开启html后缀的文件名支持ssi

server{

    ......

    ssi on;

    ssi_silent_errors on;

}


3、在sample目录下开启html后缀的文件名支持ssi

server{

    ......

    location /sample/{

        ssi on;

        ssi_silent_errors on;

    }

}


保存 重启 nginx


SSI的格式

正确写法  < !--#include file="ui_php_json_encode_decode.html"-->

正确写法  < !--#include virtual="/ui_php_json_encode_decode.html"-->

路径是相对server中root根目录。


错误写法  <!--#include file="https://www.abclogs.com/ui_php_json_encode_decode.html"-->  

错误写法  <!--#include file="/var/www/html/website/static/ssi/needtoinclude/ui_php_json_encode_decode.html"--> 


时间:2017年03月10日    作者:孟德    分类:Linux   浏览:3151    评论:0

链接地址:https://www.abclogs.com/linux_nginx_ssi_shtml.html