`
2277259257
  • 浏览: 518478 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Nginx配置SSI

 
阅读更多

一.什么是SSI
SSIServer Side Include,是一种基于服务端的网页制作技术,大多数(尤其是基于Unix平台)的web服务器Netscape Enterprise Server等均支持SSI命令。

用个例子来说明,一个静态化的页面中,需要嵌入一小块实时变化的内容,。例如首页,大部分的页面内容需要缓存但是用户登录后的个人信息是动态信息,不能缓存。那么如何解决这个”页面部分缓存”问题,利用SSI就可以解决,在首页的静态页面中嵌入个人信息的动态页,由于是服务器端的嵌入,所以用户浏览的时候都是一个嵌入后的页面。
它的工作原因是:在页面内容发送到客户端之前,使用SSI指令将文本、图片或代码信息包含到网页中。对于在多个文件中重复出现内容,使用SSI是一种简便的方法,将内容存入一个包含文件中即可,不必将其输入所有文件。通过一个非常简单的语句即可调用包含文件,此语句指示 Web 服务器将内容插入适当网页。而且,使用包含文件时,对内容的所有更改只需在一个地方就能完成。

二.如何在nginx上配置SSI
需要的选项主要是以下三个:
ssi: 默认值off,启用ssi时将其设为on
ssi_silent_errors: 默认值off,开启后在处理SSI文件出错时不输出错误提示"[an error occurred while processing the directive]"。
ssi_types: 默认是text/html,所以如果需支持html,则不需要设置这句,如果需要支持shtml则需要设置:ssi_types text/shtml
三个参数可以放在http, server或location作用域下。

三. 实例

[plain] view plaincopy
  1. server {  
  2.     listen  10.3.9.27:80;  
  3.     server_name  www.ball.com;  
  4.     location / {  
  5.         ssi on;  
  6.         ssi_silent_errors on;  
  7.         ssi_types text/shtml;  
  8.         index index.shtml;  
  9.         root /usr/local/web/wwwroot;  
  10.         expires 30d;  
  11.         access_log      /data/logs/www.ball.com-access_log main;  
  12.     }  
  13. }  


了解更多SSI配置及命令请猛击这里

 

页面上配置

  1. <!–# include file=”/m/2013/4/15/index_top.html”–>  

这里,重点介绍nginx ssi的include之virtual的使用!下一博文介绍include之file的使用。

其他不多说,直接上配置:

 1 upstream wxcj-server {
 2     server 10.90.7.1:8082;
 3     server 10.90.7.2:8082;
 4     ip_hash;
 5 }
 6 
 7 server {
 8         listen       82;
 9         server_name  localhost;
10 
11         ssi on;
12         ssi_silent_errors       off;
13         ssi_types       text/html;
14 
15         access_log  logs/wxcj-test.log;
16 
17         #location ~ \.(shtm|shtml)$ {
18         #       root /var/wxcj;
19         #       index index.shtml;
20         #}
21 
22         location /tests {
23                 rewrite /tests/(\w+)/(\w+).html  /option/$1.html?product_id=$2;
24                 set $product_id $arg_product_id;
25         }
26 
27         location /option {
28                 root /var/wxcj/cms/;
29                 #set $product_id $arg_product_id;
30         }
31         location /product {
32                 root /var/wxcj/cms/;
33                 #set $product_id $arg_product_id;
34         }
35 
36         location / {
37            proxy_pass http://wxcj-server;
38            proxy_redirect off;
39            proxy_set_header Host $host:$server_port;
40            proxy_set_header Remote_Addr $remote_addr;
41            proxy_set_header X-Real-IP $remote_addr;
42            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
43 
44           }
45       }

红色部分是这里要讲的重点内容。这里都是介绍静态文件的访问配置,至于动态的文件,是通过upstream以及proxy-pass部分实现的,不是这里介绍的内容,略去!

静态部分,有两个虚拟路径/option,一个是/product,这两个涉及到实际访问时url的一部分。另外的一个重点,是22-25行的配置,这里有rewrite以及set两个重要的指令。

1》 rewrite重写url,这里,将类似/tests/a/b.html的请求重写为/option/a.html?product_id=b这样子的url。此时,http请求将进入到/option/虚拟路径下面,注意,这里的/option以及/product这两个虚拟路径都是相对root配置的路径而言的,root路径是绝对的路径。本测试中的root路径和/option以及/product路径如下:

1 [root@localhost cms]# pwd
2 /var/wxcj/cms      #本例中配置的root
3 [root@localhost cms]# ll
4 总计 8
5 drwxr-xr-x 2 root root 4096 06-14 09:10 option  #/option虚拟路径
6 drwxr-xr-x 2 root root 4096 06-13 18:29 product  #/product虚拟路径

2》 set指令,在这里也非常关键,是用来设置nginx的应用变量的。这个变量可以传递到ssi指令的解析过程中。 set $product_id $arg_product_id这个是将rewrite指令中?符号后面的变量的值通过$arg_product_id取到付给变量$product_id, 在nginx中取url中?后面的变量的值是通过$arg_作为前缀获取的。 例如/abc/123?name="9527", 那么,set $yourname $arg_name指令就可以将这个url中的name变量的值9527赋值给变量$yourname.

 

下面看看我的测试页面,我的url是http://10.90.7.1:82/tests/s1001/1000.html,nginx首先rewrite成为http://10.90.7.1:82/option/s1001.html?product_id=1000这个样子。先看看option下面的内容:

1 [root@localhost cms]# cd option/
2 [root@localhost option]# ll
3 总计 20
4 -rw-r--r-- 1 root root 114 06-14 09:00 s1001.html
5 -rw-r--r-- 1 root root 120 06-14 09:08 s1002.html
6 -rw-r--r-- 1 root root 127 06-14 09:10 s2001.html
7 -rw-r--r-- 1 root root  94 06-13 18:03 s2002.html
8 -rw-r--r-- 1 root root  94 06-13 18:03 s2003.html

再看看s1001.html的内容:

1 <div>
2         this is an option A
3 </div>
4 <!--# echo var="product_id" -->
5 <!--# include virtual="/product/$product_id.html" -->

另外动态参数product_id.html的内容,在这个例子里面,这个文件是1000.html,其内容如下:

1 <p> this is a title for product 1000</p>

注意,上面的virtual等号右边的格式,是相对于root路径的一个绝对路径写法,也可以理解为虚拟路径。上面的echo指令后面的var等号右边,必须是变量的名字,不要带上$这个符号。还有一点就是ssi指令的语法,<!--#是一个整体,否则会造成ssi指令的内容解析不出来的问题。与后面的内容比如echo,include等指令之间有至少一个空格。后面的-->与前面的内容之间最好分开,不要连在一起,养成一个好的编码习惯。

最后浏览器打开后的效果如下:

分享到:
评论

相关推荐

    Nginx SSI指令配置详解

    什么是SSI Server Side Include,通常称为服务器端嵌入,是一种类似于ASP的基于服务器的网页制作技术。大多数(尤其是基于Unix平台)的WEB服务器如Netscape Enterprise Server等均支持SSI命令。...nginx配置SSI 主要

    SSI完整配置实例

    1. **启用SSI**:首先,你需要在Web服务器的配置文件(如Apache的httpd.conf或Nginx的nginx.conf)中启用SSI支持。这通常是通过设置`EnableSendfile off`(Apache)或`ssi on`(Nginx)来实现的。 2. **SSI指令**:...

    Apache、Nginx 服务配置服务器端包含(SSI)

    ### Nginx配置SSI 对于Nginx,配置SSI相对简单。在Nginx的HTTP或Server块中添加以下指令: ```nginx ssi on; ssi_silent_errors off; ssi_types text/shtml; ``` - `ssi on` 开启SSI功能。 - `ssi_silent_errors ...

    nginx配置参数说明.txt

    模块化机制,非DSO机制,支持多种过滤器gzip,SSI和图像的模块完成图形大小调整等 支持SSL 扩展功能: 基于名称和IP做虚拟主机 支持keeplive 支持平滑配置更新或程序版本升级 定制访问日志,支持使用...

    Nginx配置文件结构.md

    Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。 处理静态文件,索引文件以及自动索引;打开文件描述符缓冲。 无缓存的反向代理加速,简单的负载均衡和容错。 FastCGI,简单的负载均衡和...

    nginx配置优化

    **Nginx配置优化**是提高Web服务器性能的关键步骤,特别是在处理高并发访问、静态资源分发和反向代理等场景下。Nginx以其轻量级、高性能和稳定性著称,通过合理的配置,可以有效地减少响应时间,提高系统整体效率。 ...

    Nginx教程从入门到精通--文字版.pdf

    5. Nginx配置虚拟主机:虚拟主机配置允许一台服务器提供多个独立域名的Web服务。 6. Nginx location配置:location指令用于配置URL路由,即根据不同的请求路径(URI)来分发请求到不同的服务器或资源。 7. Nginx ...

    让Nginx支持shtml格式的配置方法

    打开Nginx配置文件nginx.conf,在http里加入以下三句话。 代码如下: # vi /usr/local/nginx/conf/nginx.conf 在http{}中添加如下代码即可: 代码如下: ssi on; ssi_silent_errors on; ssi_types text/shtml; ps....

    Nginx教程从入门到精通到失业

    - **Nginx 配置**:通过 `SSI on` 等指令在 Nginx 中启用 SSI 功能。 #### 八、日志切割 - **定义日志轮滚策略**:设置日志文件的最大大小、保存天数等。 - **设置计划任务**:使用 `cron` 等工具定期执行日志切割...

    SSI整合项目 SSI系统绞手架 SSI框架整合

    3. **错误处理和日志记录**:配置SSI以捕获和处理可能出现的错误,同时确保有合适的日志记录系统,以便于后期的调试和问题排查。 4. **性能优化**:理解如何通过缓存机制、合理的文件组织结构等方法优化SSI的性能,...

    Nginx面试专题及答案.pdf

    在Nginx中获得当前时间需要使用SSI模块和相关变量,比如`$date_gmt`和`$date_local`,通过`Proxy_set_header`指令将时间变量传递给后端服务器。 `-s`参数用于运行Nginx服务器的可执行文件,它允许执行停止、重新...

    Nginx+tomcat+ssl安装配置手册.pdf

    2. 修改Nginx配置文件:在Nginx的配置文件中添加SSL证书和私钥的路径。 3. 重启Nginx服务:应用配置更改并重启Nginx,使SSL配置生效。 完成这些步骤后,Nginx不仅会作为一个反向代理,还能够通过HTTPS提供安全的...

    nginx 各个历史版本

    - **1.1.0版本**:Nginx继续优化性能,降低了CPU和内存使用,同时增加了对HTTP/1.1协议的完整支持和更多配置选项。 - **1.5.1版本**:这一版本引入了更多性能优化,如异步事件处理,同时支持更多的Web服务特性,如...

    Nginx应用技术指南__最新版

    通过调整Nginx配置参数,如worker_processes、keepalive_timeout等,可以进一步提升Nginx的性能和稳定性。 #### 十三、构建高性能LEMP环境 LEMP(Linux+Nginx+MySQL+PHP)是一种流行的Web服务堆栈组合,通过合理...

    ssi项目实例

    6. **Web服务器配置**:了解如何在Apache或Nginx等Web服务器中启用和配置SSI支持,以及可能遇到的配置问题和解决方法。 7. **实际应用**:通过实例,理解SSI在实际网站中的应用,如头部和底部导航栏的统一管理,...

    Nginx 常见应用技术指南

    #### Nginx配置与管理 - **配置详解**:Nginx的配置文件清晰且功能强大,允许用户通过简单的指令调整服务器行为,包括但不限于监听端口、虚拟主机设置、重写规则、缓存策略等。 - **负载均衡**:Nginx的负载均衡...

    使用 Nginx 部署静态页面的方法

    Nginx还具备模块化的结构,如gzipping,byteranges,chunkedresponses,以及SSI-filter等filter。此外,Nginx还支持SSL和TLSSNI。 Nginx的优点包括轻量、高性能和并发能力强。其高性能得益于其独特的框架设计,在启动...

    Nginx服务器配置文件完全解析

    以上只是Nginx配置文件中的基础设置,实际应用中可能需要根据具体业务需求进行更复杂的配置,如添加虚拟主机、负载均衡、缓存策略等。理解并熟练运用这些配置,可以有效地提升Nginx服务器的性能和稳定性。

    Nginx常见应用技术指南(nginx-tips)

    自2004年起,Nginx就已经投入使用,它的源代码以类BSD许可证的形式发布,并因其稳定性、丰富的功能集、示例配置文件以及对系统资源的低消耗而声名鹊起。它适合用于负载均衡、反向代理、HTTP缓存、SSL/TLS代理等场景...

Global site tag (gtag.js) - Google Analytics