nginx的ssi

Nginx 中的服务器端包含 (SSI)

#Nginx

在处理缓存或将(动态)文件包含到静态文件中时,服务器端包含是一个非常方便的功能。下面介绍如何使用它并配置 Nginx 以启用 SSI 的强大功能。

由Mark van Eijk于 2023 年 12 月 7 日 发布 · 阅读时间 2 分钟

  1. 什么是服务器端包含 (SSI)
  2. SSI 何时有用?
  3. 如何在 Nginx 中启用 SSI
  4. 添加 nginx apt 存储库
  5. 使用 nginx-full 安装 nginx
  6. 配置 SSI
  7. 重新加载 Nginx 服务

什么是服务器端包含 (SSI)

服务器端包含 (SSI) 是一种简单的脚本语言,用于在 Web 服务器上动态地将内容包含在网页中。SSI 指令嵌入在 HTML 页面中,并在页面发送到客户端浏览器之前由 Web 服务器处理。服务器执行指令并将指定的内容包含在最终交付给用户的 HTML 文档中。

SSI 通常用于以下任务:

  1. 包含内容:您可以将一个文件的内容包含到另一个文件中。这对于创建可重复使用的组件或出现在多个页面上的页眉和页脚非常有用。
<!--#include virtual="/path/to/header.html" -->
  1. 日期和时间戳:您可以将当前日期和时间插入到您的网页中。
<!--#echo var="DATE_LOCAL" -->
  1. 条件语句:SSI 支持简单的条件语句,允许您根据特定条件包含或排除内容。
<!--#if expr="${QUERY_STRING} = 1" -->
Content for query string 1.
<!--#else -->
Content for other cases.
<!--#endif -->
  1. 变量设置与显示:可以设置变量并显示其值。
<!--#set var="pageTitle" value="My Page" -->
<title><!--#echo var="pageTitle" --></title>

要使用 SSI,您的 Web 服务器需要配置为识别和处理 SSI 指令。文件扩展名“.shtml”通常与启用 SSI 的文件相关联,但配置可能因所使用的服务器软件(例如 Apache、Nginx)而异。确保服务器管理员已为所需文件扩展名启用 SSI 处理。

 SSI 什么时候有用?

虽然将文件包含到另一个文件中是动态脚本语言的典型任务,但在某些情况下 SSI 非常有用。以下情况非常适合 SSI:

  1. 脚本语言存在安全问题的托管环境
  2. 无法配置主机以执行服务器端脚本
  3. 当需要包含的文件是静态(HTML)文件时
  4. 服务器资源有限;SSI 在高流量时性能非常出色
  5. 它简单、轻量,并且使 HTML 有点动态
  6. 你再也没有借口在页脚中使用过时的版权年份数字了

如何在 Nginx 中启用 SSI

添加 nginx apt 存储库

echo "deb http://nginx.org/packages/ubuntu/ $(lsb_release -sc) nginx
deb-src http://nginx.org/packages/ubuntu/ $(lsb_release -sc) nginx" > /etc/apt/sources.list.d/nginx.list
sudo curl -L https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
sudo apt-get update

使用 nginx-full 安装 nginx

sudo apt install -y nginx-full

配置 SSI

在需要使用SSI的位置块中添加以下规则:

#也可以在http块添加此配置

location / {
    ...
    ssi on;
    ssi_silent_errors on;
    ssi_types text/shtml;
    ...
}

重新加载 Nginx 服务

重新加载 Nginx 服务以应用配置更改,无需停机:

sudo service nginx reload
 

 

posted @ 2024-07-23 16:13  caibutou  阅读(29)  评论(0编辑  收藏  举报