当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪nginx的url为目录时会自动加斜线吗      在nginx服务器中访问带目录的url时,不会自动加斜线,有的朋友加了rewrite来实现,有的朋友设置 server_name_in_redirect off来实现。 我测试了下带目录时的情况,发现斜线是可以自动加上的。 进.........
    ▪nginx中使用ssi包含文件的方法      本文为大家介绍nginx服务器中,支持ssi包含文件的方法,供大家学习参考。 主要是三个参数,ssi,ssi_silent_errors和ssi_types,均可以放在http,server和location的作用域下。 ssi on 开启ssi支持,默认是o.........
    ▪使用fastcgi_cache加速Nginx网站          本文为大家介绍 使用fastcgi_cache加速Nginx网站 的配置方法,有需要的朋友不妨看看。     对于变化不太频繁的数据,大家都比较喜欢存Memcached以减少数据库的读取,但还是会有语言解析.........

[1]nginx的url为目录时会自动加斜线吗
    来源: 互联网  发布时间: 2013-12-24

在nginx服务器中访问带目录的url时,不会自动加斜线,有的朋友加了rewrite来实现,有的朋友设置 server_name_in_redirect off来实现。
我测试了下带目录时的情况,发现斜线是可以自动加上的。

进一步测试,发现在访问带目录的url时,nginx会自动加斜线,其实是在内部自动做了一个301跳转,加了斜线。
可以用httpwatch,或者 curl -I http://.../dir来测试。

看看官方的介绍,就明白了:
在某些情况下(具体可参考 wiki.nginx.org),Nginx 内部重定向规则会被启动,例如,当 URL 指向一个目录并且在最后没有包含“/”时,Nginx 内部会自动的做一个 301 重定向,这时会有两种情况:
1、server_name_in_redirect on(默认),URL 重定向为: server_name 中的第一个域名 + 目录名 + /;
2、server_name_in_redirect off,URL 重定向为: 原 URL 中的域名 + 目录名 + /。

在做rewrite时多注意,servername和alias。
由此可知,nginx现在是会自动加斜线的。


    
[2]nginx中使用ssi包含文件的方法
    来源: 互联网  发布时间: 2013-12-24

本文为大家介绍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

SSI的格式:
<!--#include file="bottom.htm"-->

<!--#include virtual="/hx/bottom.htm"-->
路径是相对server中root根目录。

更多内容,参见官方文档:http://wiki.nginx.org/NginxChsHttpSsiModule

示例:
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.在zt目录下开启html后缀的文件名支持ssi
 

代码如下:
server{
    ......
    location /hx/{
        ssi on;
        ssi_silent_errors on;
    }
}

您可能感兴趣的文章:
nginx、apache开启ssi(在HTML文档中增加动态内容)
IIS7输出缓存对SSI的影响应该如何处理
配置Apache支持cgi、SSI、shtml
简单了解niginx ssi


    
[3]使用fastcgi_cache加速Nginx网站
    来源: 互联网  发布时间: 2013-12-24

    本文为大家介绍 使用fastcgi_cache加速Nginx网站 的配置方法,有需要的朋友不妨看看。

    对于变化不太频繁的数据,大家都比较喜欢存Memcached以减少数据库的读取,但还是会有语言解析运行上的消耗(比如运行PHP,Python等),当然这个时间很短,记得OP上有个同学说P字头的语言,效率都不高,如果能省去,当然最好。(已经用上Squid等的可以忽略本文)。

    还有一个问题就是很多时候一个页面由多个数据片断组成,为了提高页面速度,要么分别缓存,要么整体缓存(所谓的Page Cache),其实都比较麻烦,增加和减少数据片断的时,大多需要调整。

    最后一个问题,所有的数据都存Memcached是否经济?服务器资源足够多的无所谓,捉襟见肘的就要考虑了,当然,生成静态页面是一种方法,需要维护,还是比较累。

    nginx的fastcgi_cache可以解决上面的那些问题,比较squid等的好处是简单,不需再要去维护另外一个系统,适合不那么大的网站。

    关于Nginx fastcgi_cache,基础的可以参看Nginx官方文档http://wiki.nginx.org/HttpFcgiModule,下面是一个典型的做法是:
 

代码如下:
fastcgi_temp_path /data/ngx_fcgi_tmp;
fastcgi_cache_path /data/ngx_fcgi_cache levels=2:2 keys_zone=ngx_fcgi_cache:512m inactive=1d max_size=40g;
fastcgi_cache_valid 200 301 302 1d;
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_cache_key $request_method://$host$request_uri;

注意一定要加上$request_method作为cache key,否则如果HEAD类型的先请求会导致后面的GET请求返回为空,全局定义一个缓存空间,配置文件名为,fastcgi_cache.conf,然后在vhost配置里面加上:
 

代码如下:
fastcgi_cache ngx_fcgi_cache;
include fastcgi.conf;

各个参数的含义:
fastcgi_temp_path:生成fastcgi_cache临时文件目录
fastcgi_cache_path:fastcgi_cache缓存目录,可以设置目录哈希层级,比如2:2会生成256*256个字目录,keys_zone是这个缓存空间的名字,cache是用多少内存(主要缓存key和文件元信息,不会缓存页面),inactive表示默认失效时间,max_size表示最多用多少硬盘空间,需要注意的是fastcgi_cache缓存是先写在fastcgi_temp_path再移到fastcgi_cache_path,所以这两个目录最好在同一个分区,从0.8.9之后可以在不同的分区,不过还是建议放同一分区。

fastcgi_cache_valid:定义哪些http头要缓存
fastcgi_cache_use_stale:定义哪些情况下用过期缓存
fastcgi_cache_key:定义fastcgi_cache的key,示例中就以请求的URI作为缓存的key,Nginx会取这个key的md5作为缓存文件,如果设置了缓存哈希目录,Nginx会从后往前取相应的位数做为目录。
fastcgi_cache:用哪个缓存空间这样就可以了,基本上可以work。
如何手动清除缓存?有个Nginx的第三方扩展可帮你做到:https://github.com/FRiCKLE/ngx_cache_purge/。
如果对大多数第三方扩展无爱,写个清除的脚本也非常简单,以PHP为例:
 

代码如下:
<?php
function purgeCache()
{
    $url = $this->post('url');
 
    if (empty($url) || !Cola_Com_Validate::url(/blog_article/$url/index.html)) {
        exit('请输入正确的URL。');
    }
 
    $md5 = md5($url);
    $cacheFile = $this->_cacheRoot . '/' . substr($md5, -2, 2) . '/' . substr($md5, -4, 2) . '/' . $md5;
 
    if (!file_exists($cacheFile)) {
        exit('缓存不存在。');
    }
 
    if (@unlink($cacheFile)) {
        echo '清除缓存成功。';
    } else {
        echo '清除缓存失败。';
    }
}

核心是第11行,直接找到缓存文件,然后删掉就可以,这个脚本有个副作用,手动清除之后,缓存失效,但Nginx后面还会自己清除一遍,然后报个unlink失败的日志,不过无关紧要了。

淡定,文章还没完,要不就成标题党了,Nginx fastcgi_cache缓存很不错,但我只想在某些页面用fastcgi_cache,很简单,有两种方法,一是在location中定义fastcgi_cache,这样只有满足一定规则的url才会用上cache,其他的就不会了;另外一种方法是在你不需要缓存的页面上,输出禁止缓存的头信息,用ColaPHP的话,直接$this->response->disableBrowserCache(); 具体代码:
 

代码如下:
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

这样就告诉Nginx,这个页面不需要缓存。

还有最后一个问题,如果页面中只有一小部分内容不可以缓存,可以用Nginx fastcgi_cache吗?比如某个内容页,大部分内容可以缓存,但希望把用户的登录信息更新上去。答案是肯定的,可以直接输出用户未登录的页面样式,等页面加载完毕之后,通过ajax异步更新用户信息:
 

代码如下:
$().ready(function() {
    initUser();
})

    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3