Nginx伪动态SSI(Server Side Includes)是一种通过Nginx配置实现类似动态页面效果的技术。SSI允许在HTML页面中嵌入服务器端指令,Nginx可以通过SSI模块解析这些指令并生成动态内容。

1. Nginx SSI模块启用

确保Nginx已安装并启用了SSI模块。可以通过以下命令检查:

nginx -V 2>&1 | grep -- '--with-http_ssi_module'

如果输出中包含--with-http_ssi_module,则表示SSI模块已启用。

2. 配置Nginx支持SSI

在Nginx配置文件中(通常是/etc/nginx/nginx.conf或站点配置文件),添加或修改以下内容:

server {
    listen 80;
    server_name example.com;

    location / {
        ssi on;  # 启用SSI
        root /var/www/html;
        index index.shtml;
    }
}
  • ssi on;:启用SSI解析。

  • root /var/www/html;:指定网站根目录。

  • index index.shtml;:设置默认首页为index.shtml

3. SSI指令示例

在HTML文件中使用SSI指令,文件扩展名通常为.shtml。以下是一些常见的SSI指令:

  • 包含文件

    <!--#include virtual="/header.html" -->

    该指令会将/header.html文件的内容插入到当前页面中。

  • 显示环境变量

    <!--#echo var="DOCUMENT_URI" -->

    该指令会输出当前请求的URI。

  • 条件判断

    <!--#if expr="$HTTP_USER_AGENT = /Mobile/" -->
      移动设备访问
    <!--#else -->
      桌面设备访问
    <!--#endif -->

    该指令根据用户代理判断设备类型并显示不同内容。

4. 案例

假设有一个网站,需要在不同页面中动态插入头部和尾部内容。

  • header.html

    <header>
        <h1>Welcome to My Website</h1>
    </header>
  • footer.html

    <footer>
        <p>Copyright © 2023 My Website</p>
    </footer>
  • index.shtml

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Home Page</title>
    </head>
    <body>
        <!--#include virtual="/header.html" -->
        <main>
            <p>This is the home page content.</p>
        </main>
        <!--#include virtual="/footer.html" -->
    </body>
    </html>

5. 重启Nginx

配置完成后,重启Nginx以使更改生效:

sudo systemctl restart nginx

6. 访问页面

访问http://example.com/index.shtml,Nginx会解析SSI指令并生成包含头部和尾部的动态页面。

总结

通过Nginx的SSI模块,可以在静态HTML页面中嵌入动态内容,实现伪动态效果。适用于需要动态插入少量内容的场景,如头部、尾部、环境变量等。

本篇文章内容来源于:Nginx伪动态SSI服务器详细说明以及案例