当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪nginx缓存html静态文件 解析php及反向代理IIS的配置      nginx缓存html静态文件 解析php及反向代理IIS的配置,供初学的朋友参考。     代码如下: server         {             listen          80;             server_name     k;   #碰.........
    ▪Apache/Nginx 分别配置 Cache Last-Modified、Expires      我们知道,正确使用Expires标识处理,可以使得页面更加有效被缓冲,节约带宽资源。 先来看apache中的配置:   代码如下: <IfModule mod_expires.c>     ExpiresActive On     ExpiresByType image/gif .........
    ▪再议nginx的rewrite中last和break的区别      再议nginx的rewrite中last和break的区别,供朋友们学习参考。 实际配置中,有时用last并不能工作,换成break则可以,其中的原理是对于根目录的理解有所区别,按我的测试结果大致是这样的。   .........

[1]nginx缓存html静态文件 解析php及反向代理IIS的配置
    来源: 互联网  发布时间: 2013-12-24

nginx缓存html静态文件 解析php及反向代理IIS的配置,供初学的朋友参考。
   

代码如下:

server
        {
            listen          80;
            server_name     k;   #碰到域名为k的  就交给iis来运行

            location / {
                proxy_pass              http://k:8080/;        #我的IIS上面的站点即为http://k:8080
                }
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|html|htm|css)$ {        #指定缓存文件类型
                expires 7d;      #设置浏览器过期时间
                root a;                   #所有的缓存文件都会保存在这里html等等,他还会缓存文件夹,所以不用担心覆盖,但是要注意时效性,不然你做了修改 他依旧读取缓存,你的网站就没有变化了        
                proxy_store on;        #开启缓存机制
                proxy_store_access user:rw group:rw all:rw;       #缓存读写规则
                proxy_temp_path b;            #存放静态文件的缓存目录
                #include proxy.conf;          # 外联proxy理的详细配置如proxy_set_header, client_max_body_size ....
                if ( !-e $request_filename) {  
                proxy_pass  http://k:8080;
                }
            }      
        }
        server {
            listen       80;
            server_name  j;     #碰到域名 j   则直接用nginx来解析

            #charset koi8-r;

            #access_log  logs/host.access.log  main;

            location / {
                root   html;
                index  index.html index.htm index.php;
            }
 

下面是nginx缓存及反向代理IIS网站的原理分析:


您可能感兴趣的文章:
Nginx负载均衡与反向代理的例子(图文)
Nginx Proxy 代理配置图片缓存的实例参考
nginx正向代理配置简单一例
nginx反向代理配置简单示例
学习Nginx反向代理实现简单负载均衡(图文)
nginx1.0.0配置ngx_cache_purge实现高效反向代理的方法
nginx中配置proxy正向代理
nginx创建反向代理和虚拟主机的例子
nginx的反向代理配置与优化
nginx反向代理与varnish缓存配置
nginx反向代理与负载均衡
Nginx 反向代理的小例子
nginx反向代理与缓存详解
nginx反向代理配置一例
Nginx反向代理Nginx
nginx反向代理配置和优化
Nginx Proxy代理和图片缓存配置
nginx配置反向代理的简单示例


    
[2]Apache/Nginx 分别配置 Cache Last-Modified、Expires
    来源: 互联网  发布时间: 2013-12-24

我们知道,正确使用Expires标识处理,可以使得页面更加有效被缓冲,节约带宽资源。
先来看apache中的配置:
 

代码如下:
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/gif A2592000
    ExpiresByType image/jpeg A2592000
    ExpiresByType image/png A2592000
    ExpiresByType image/x-icon A2592000
    ExpiresByType application/x-javascript A604800
    ExpiresByType text/css A604800
</IfModule>
 

或者
 

代码如下:
<ifmodule mod_expires.c>
        <filesmatch "\.(jpg|gif|png|css|js)$">
                ExpiresActive on
                ExpiresDefault "access plus 600 minutes"
        </filesmatch>
</ifmodule>
 

可以选用的时间参数有years    months    weeks    days    hours    minutes    seconds
也可以加在.htaccess文件:
 

代码如下:
#Expire Header
<FilesMatch "\.(ico|jpg|jpeg|png|gif|js|css|swf)$">
    ExpiresDefault "access plus 2 hours"
</FilesMatch>
or
# Expire images header
ExpiresActive On
ExpiresDefault A0
ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType image/jpg A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/ico A2592000
ExpiresByType text/css A2592000
ExpiresByType text/javascript A2592000
#A2592000 means 1 month in the future (60*60*24*30=2592000)

这里是nginx配置:
 

代码如下:

            location ~* ^.+\.(jpg|jpeg|gif|png|swf|rar|zip|css|js|flv|mp3|wma|wmv|ram|rm)$ {
            valid_referers none blocked *.veryi.com;
            if ($invalid_referer) {
                #rewrite ^/ http:///cloud.gif;
                #return 412;
                return 403;
            }
            access_log off;
            root /opt/www;
            expires 10h;
            break;      
                }
或者          
                location ~ \.(gif|jpg|png|swf|flv|bmp)$ {
                        valid_referers none blocked *.veryi.com;
                        if ($invalid_referer) {
                             #rewrite ^/ http://www./403.JPG;
                             return 403;
                        }
                        expires      30d;
                }

        location ~ .*\.(js|css)?$
        {
        expires      3d;
        }
 

测试:
curl -I http://www./pic/logo.jpg
HTTP/1.1 200 OK
Server: Apache/2.0.63
Date: Tue, 21 Jun 2011 08:13:06 GMT
Content-Type: image/gif
Content-Length: 21734
Last-Modified: Tue, 21 Jun 2011 08:11:00 GMT
Connection: keep-alive
Expires: Thu, 21 Jul 2011 08:13:06 GMT
Cache-Control: max-age=2592000
Accept-Ranges: bytes

Etag和Expires的工作原理
在客户端通过浏览器发出第一次请求某一个URL时,根据 HTTP 协议的规定,浏览器会向服务器传送报头(Http Request Header),服务器端响应同时记录相关属性标记(Http Reponse Header),服务器端的返回状态会是200,格式类似如下:
HTTP/1.1 200 OK
Date: Tue, 03 Mar 2009 04:58:40 GMT
Content-Type: image/jpeg
Content-Length: 83185
Last-Modified: Tue, 24 Feb 2009 08:01:04 GMT
Cache-Control: max-age=2592000
Expires: Thu, 02 Apr 2009 05:14:08 GMT
Etag: “5d8c72a5edda8d6a:3239″

客户端第二次请求此URL时,根据 HTTP 协议的规定,浏览器会向服务器传送报头(Http Request Header),服务器端响应并记录相关记录属性标记文件没有发生改动,服务器端返回304,直接从缓存中读取:
HTTP/1.x 304 Not Modified
Date: Tue, 03 Mar 2009 05:03:56 GMT
Content-Type: image/jpeg
Content-Length: 83185
Last-Modified: Tue, 24 Feb 2009 08:01:04 GMT
Cache-Control: max-age=2592000
Expires: Thu, 02 Apr 2009 05:14:08 GMT
Etag: “5d8c72a5edda8d6a:3239″
其中Last-Modified、Expires和Etag是标记页面缓存标识

一、Last-Modified、Expires和Etag相关工作原理

1、Last-Modified
在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属性标记(Http Reponse Header)此文件在服务期端最后被修改的时间,格式类似这样:
Last-Modified: Tue, 24 Feb 2009 08:01:04 GMT

客户端第二次请求此URL时,根据 HTTP 协议的规定,浏览器会向服务器传送 If-Modified-Since 报头(Http Request Header),询问该时间之后文件是否有被修改过:
If-Modified-Since: Tue, 24 Feb 2009 08:01:04 GMT

如果服务器端的资源没有变化,则自动返回 HTTP 304 (Not Changed.)状态码,内容为空,这样就节省了传输数据量。当服务器端代码发生改变或者重启服务器时,则重新发出资源,返回和第一次请求时类似。从而保证不向客户端重复发出资源,也保证当服务器有变化时,客户端能够得到最新的资源。

注:如果If-Modified-Since的时间比服务器当前时间(当前的请求时间request_time)还晚,会认为是个非法请求

2、Etag工作原理
HTTP 协议规格说明定义ETag为“被请求变量的实体标记” (参见14.19)。简单点即服务器响应时给请求URL标记,并在HTTP响应头中将其传送到客户端,类似服务器端返回的格式:
Etag: “5d8c72a5edda8d6a:3239″

客户端的查询更新格式是这样的:
If-None-Match: “5d8c72a5edda8d6a:3239″

如果ETag没改变,则返回状态304。

即:在客户端发出请求后,Http Reponse Header中包含 Etag: “5d8c72a5edda8d6a:3239″

标识,等于告诉Client端,你拿到的这个的资源有表示ID:5d8c72a5edda8d6a:3239。当下次需要发Request索要同一个URI的时候,浏览器同时发出一个If-None-Match报头( Http Request Header)此时包头中信息包含上次访问得到的Etag: “5d8c72a5edda8d6a:3239″标识。
If-None-Match: “5d8c72a5edda8d6a:3239“
,这样,Client端等于Cache了两份,服务器端就会比对2者的etag。如果If-None-Match为False,不返回200,返回304 (Not Modified) Response。

3、Expires
给出的日期/时间后,被响应认为是过时。如Expires: Thu, 02 Apr 2009 05:14:08 GMT
需和Last-Modified结合使用。用于控制请求文件的有效时间,当请求数据在有效期内时客户端浏览器从缓存请求数据而不是服务器端. 当缓存中数据失效或过期,才决定从服务器更新数据。

4、Last-Modified和Expires
Last-Modified标识能够节省一点带宽,但是还是逃不掉发一个HTTP请求出去,而且要和Expires一起用。而Expires标识却使得浏览器干脆连HTTP请求都不用发,比如当用户F5或者点击Refresh按钮的时候就算对于有Expires的URI,一样也会发一个HTTP请求出去,所以,Last-Modified还是要用的,而 且要和Expires一起用。

5、Etag和Expires
如果服务器端同时设置了Etag和Expires时,Etag原理同样,即与Last-Modified/Etag对应的Http Request Header:If-Modified-Since和If-None-Match。我们可以看到这两个Header的值和Web Server发出的Last-Modified,Etag值完全一样;在完全匹配If-Modified-Since和If-None-Match即检查完修改时间和Etag之后,服务器才能返回304.


    
[3]再议nginx的rewrite中last和break的区别
    来源: 互联网  发布时间: 2013-12-24

再议nginx的rewrite中last和break的区别,供朋友们学习参考。

实际配置中,有时用last并不能工作,换成break则可以,其中的原理是对于根目录的理解有所区别,按我的测试结果大致是这样的。
 

代码如下:
#location / {
#proxy_pass http://test;
#alias /home/html/;
#root /home/html;
#rewrite "^/a/(.*)\.html$" /1.html last;
#}

在#location / { 配置里:
1、使用root指定源:使用last和break都可以
2、使用proxy_pass指定源:使用last和break都可以
3、使用alias指定源:必须使用last

在location /a/或使用正则的location ~ ^/a/里:
1、使用root指定源:使用last和break都可以
2、使用proxy_pass指定源:使用break和last结果有所区别
3、使用alias指定源:必须使用last

其中区别主要在proxy_pass这个标签上,再看看几个测试结果:
 

代码如下:

location / {
root /home/html;
}

location /a/ {
proxy_pass http://test;
rewrite "^/a/(.*)\.html$" /1.html last;
}

在这段配置里,使用last访问是可以访问到东西的,不过,它出来的结果是:/home/html/1.html;可我需要的是http://test/1.html?使用break就可以了。
 

代码如下:

location / {
root /home/html;
}

location /a/ {
proxy_pass http://test;
rewrite "^/a/(.*)\.html$" /a/1.html last;
}

在这段配置里,返回错误,因为last会重新发起请求匹配,所以造成了一个死循环,使用break就可以访问到http://test/a/1.html。

所以,使用last会对server标签重新发起请求,而break就直接使用当前的location中的数据源来访问,要视情况加以使用。一般在非根的location中配置rewrite,都是用的break;而根的location使用last比较好,因为如果配置了fastcgi或代理访问jsp文件的话,在根location下用break是访问不到。测试到rewrite有问题的时候,也不妨把这两者换换试试。

至于使用alias时为什么必须用last,估计是nginx本身就限定了的,怎么尝试break都不能成功。


    
最新技术文章:
▪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脚本实现复制文件到多台服务器的代码分...
▪Linux下实现SSH免密码登录和实现秘钥的管理、... iis7站长之家
▪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