一、反向代理配置 (原文链接:http://www.studyshare.cn/blog-front//blog/details/1155/0 )

准备:两个项目分别使用端口8080,8081,只有一个备案域名,配置如下

server {
listen 80; //端口配置
server_name www.study.cn; #配置域名
#charset koi8-r;
#access_log logs/host.access.log main;
location / { #location路由,当浏览器访问:http://www.study.cn或者http????/www.study.cn/会被nginx匹配到该location下,匹配后将域名替换为localhost:8080
proxy_pass http://localhost:8080;
}
location /blog { #location路由,当浏览器访问:http://www.study.cn/blog时,会被nginx匹配到该location,并将域名替换问localhost:8081
proxy_pass http://localhost:8081;
proxy_set_header X-Real-IP $remote_addr; #设置获取浏览器访问的网络ip
}

}

二、缓存配置

1、配置http{}

http {

.....#略
#缓存配置
proxy_connect_timeout 10;
proxy_read_timeout 180;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 96k;
proxy_temp_file_write_size 96k;
proxy_temp_path /tmp/temp_dir;
proxy_cache_path /tmp/cache levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=10g;
#缓存配置
...#略

}
配置参数详解:

proxy_connect_timeout:服务器连接的超时时间

proxy_read_timeout:连接成功后,等候后端服务器响应时间

proxy_send_timeout:后端服务器数据回传时间

proxy_buffer_size:缓冲区的大小

proxy_buffers:每个连接设置缓冲区的数量和每块缓冲区的大小

proxy_busy_buffers_size:开启缓冲响应的功能以后,在没有读到全部响应的情况下,写缓冲到达一定大小时,nginx一定会向客户端发送响应,直到缓冲小于此值。proxy_temp_file_write_size:设置nginx每次写数据到临时文件的大小限制

proxy_temp_path:从后端服务器接收的临时文件的存放路径

proxy_cache_path:设置缓存的路径和其他参数。被缓存的数据如果在inactive参数(当前为1天)指定的时间内未被访问,就会被从缓存中移除

2、配置server{}

server{

    location ~ /blog/.*\.(css|js|png|gif|jpg) {
            proxy_pass http://localhost:8081;
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_cache cache_one;
            proxy_cache_valid 200 302 24h;
            proxy_cache_valid 301 30d;
            proxy_cache_valid any 5m;
            expires 30d;
            add_header daren "hi!cached!speed is fast.";
    }

}

配置参数详解:

location ~ /blog/..(css|js|png|gif|jpg) : 使用正则表达式匹配路由,此处/blog/是当前本地前端项目配置了/blog路由才能访问,所以静态资源文件也就在/blog/下,如果网站前端直接打开www.study.cn就能访问,则将/blog/去掉,直接配置:location ~ ..(css|js|png|gif|jpg) 即可

proxy_pass http://localhost:8081; nginx缓存里拿不到资源,就向该地址转发请求,并获取资源,然后进行缓存

proxy_redirect off; 设置后端服务器“Location”响应头和“Refresh”响应头的替换文本
proxy_set_header Host $host; 允许重新定义或者添加发往后端服务器的请求头
proxy_cache cache_one; 指定用于页面缓存的共享内存,对应http层设置的keys_zone
proxy_cache_valid 200 302 24h; 为不同的响应状态码设置不同的缓存时间
proxy_cache_valid 301 30d;
proxy_cache_valid any 5m;
expires 30d; 缓存在浏览中的时间,30d:30天,30m:30分钟

重启nginx生效后,看看效果:

(1)缓存配置生效前:
nginx反向代理、缓存及压缩配置实战
(2)缓存配置生效后:
nginx反向代理、缓存及压缩配置实战
三、压缩配置

在server{}中配置如下:

server{
    location ~ /(.*)\.(html|js|css|jpg|jpeg|png|gif)$ {
        gzip on; # 启用gzip压缩,默认是off,不启用
        # 对js、css、jpg、png、gif格式的文件启用gzip压缩功能
        gzip_types application/javascript text/css image/jpeg image/png image/gif;
        gzip_min_length 1024; # 所压缩文件的最小值,小于这个的不会压缩
        gzip_buffers 4 1k; # 设置压缩响应的缓冲块的大小和个数,默认是内存一个页的大小
        gzip_comp_level 1; # 压缩水平,默认1。取值范围1-9,取值越大压缩比率越大,但越耗cpu时间
        root html/gzip;
    }

}
原创文章,转载请注明出处,更多技术文章:http://www.studyshare.cn/blog-front//blog/index

相关文章: