安装nginx ,考虑 要 会话保持,后端服务器检查, 以及高速缓存,从网上下载如下安装包: (没有使用wget)
pcre-8.38.zip (nginx依赖库 http://sourceforge.net/projects/pcre/files/pcre/)
nginx-1.8.1.tar.gz (nginx安装包 http://nginx.org/en/download.html)
1. 安装pcre
[root@localhost nginx]# cd /app/nginx
[root@localhost nginx]# unzip pcre-8.38.zip
[root@localhost nginx]#chmod -R 777pcre-8.38
[root@localhost nginx]#cdpcre-8.38
[root@localhost pcre-8.38]# ./configure
[root@localhost pcre-8.38]# make
[root@localhost pcre-8.38]# make install
2. 安装nginx,带nginx-sticky-module, ngx_cache_purge, nginx_upstream_check_module
[root@localhost nginx]# cd /app/nginx
[root@localhost nginx]# tar -zxvfnginx-1.8.1.tar.gz
[root@localhost nginx]# tar -zxvfnginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d.tar.gz
[root@localhost nginx]# mv nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0dnginx-sticky
[root@localhost nginx]# tar -zxvfngx_cache_purge-2.3.tar.gz
[root@localhost nginx]# unzipnginx_upstream_check_module-master.zip
[root@localhost nginx]# cd nginx-1.8.1
[root@localhost nginx-1.8.1]# patch -p1< ../nginx_upstream_check_module-master/check_1.7.5+.patch (注意这里的版本号,不能搞错)
[[email protected]]#./configure --with-http_stub_status_module --with-http_realip_module--add-module=/app/nginx/nginx-sticky/ --add-module=/app/nginx/nginx_upstream_check_module-master/--add-module=/app/nginx/ngx_cache_purge-2.3/
[[email protected]]#make (编译)
[root@localhost nginx-1.8.1]#make install (安装)
配置文件中nginx.conf这里主要提一下 缓存清理的配置,因为本次在这里浪费了太多的时间:
截取nginx.conf 中关于缓存的配置>>>>>>>>>>>>
http {
...........
proxy_temp_path /usr/local/nginx/proxy_temp;
#levels设置目录层次
#keys_zone设置缓存名字和共享内存大小
#inactive在指定时间内没人访问则被删除在这里是1天
#max_size最大缓存空间*/
proxy_cache_path /usr/local/nginx/proxy_cache levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=2g;
server {
........
#清理缓存 ngx_cache_purge模块, 注意purge配置一定要放在静态缓存配置的前面
location ~ /purge(/.*)
{
allow all;
#deny all;
#这里千万要注间配置成 $host$1$is_args$args 才能正确清理到缓存
proxy_cache_purge cache_one $host$1$is_args$args;
}
#所有静态文件由nginx直接读取不经过后端
location ~ .*\.(html|gif|jpg|jpeg|png|bmp|swf|mp3|wma|js)?$
{
proxy_cache cache_one;
proxy_cache_key $host$uri$is_args$args;
#记录缓存命中状态
add_header Nginx-Cache $upstream_cache_status;
proxy_cache_valid 200 304 301 302 1h;
proxy_cache_valid 404 1m;
proxy_cache_valid any 1d;
expires 1d;
}
............
}
}
注意加红加粗的字,如果将$host$1$is_args$args 改成 $host$uri$is_args$args, 清理缓存时会报404找不到。
其实在网上早就有例子,但就是没仔细看清楚 https://github.com/FRiCKLE/ngx_cache_purge
注意事项
1、nginx.conf文件中,设置主机
proxy_set_header Host $host:$server_port;
后面的:$server_port省略时会自动指向80端口,对于非80端口的会出现问题。
2、设置 proxy_cache 缓存后,存在部分图片和css样式无法正常显示的问题,按下面链接文章中的说法,可能是设置了sendfile on导致的。暂时未验证。
http://xiaorui.cc/2015/06/24/%E6%89%AF%E6%B7%A1nginx%E7%9A%84sendfile%E9%9B%B6%E6%8B%B7%E8%B4%9D%E7%9A%84%E6%A6%82%E5%BF%B5/