# /usr/local/nginx/sbin/nginx -V 查看是否安装模块
#cd 到源码编译目录
./configure --help | grep image_filter
下载解压各个模块
下载地址
https://github.com/openresty/lua-nginx-module/archive/v0.10.10.tar.gz
http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
yum install lua-devel
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_geoip_module --with-stream=dynamic --with-http_stub_status_module --add-module=/root/ngx_cache_purge-2.3 --with-http_image_filter_module --add-module=/第三方模块路径
编译通过 不用make install
make
#重命名原来的nginx
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
#把编译完成的复制过去(在源码解压目录)
cp /objs/nginx /usr/local/nginx/sbin/nginx
#重启nginx
/usr/local/nginx/sbin/nginx -V 查看模块是否编译进去了
#把下载好的geoip的两个数据库放到
mkdir /usr/local/nginx/geoip
mv *dat /usr/local/nginx/geoip
geoip
image_filter
图片过滤器
#load_module modules/ngx_stream_module.so; #动态加载模块,必须写道开头
user nginx nginx;
#4核心启用
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000
#8核心启用
#worker_processes 8;
#worker_cpu_affinity 00000001 00000010 00000100 0000100000010000 00100000 01000000 10000000;
#这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,
#但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。
worker_rlimit_nofile 65535;
#error_log logs/error.log;
#error_log logs/error.log notice;
error_log logs/error.log info;
pid logs/nginx.pid;
events {
use epoll;
worker_connections 65535;
multi_accept on;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
#开启高效传输模式
sendfile on;
tcp_nopush on;
#开启高效传输模式end
#连接超时时间
keepalive_timeout 60; #客户端连接保持会话超时时间,超过这个时间,服务器断开这个链接
tcp_nodelay on; #也是防止网络阻塞,不过要包涵在keepalived参数才有效
client_header_buffer_size 4k; #客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过 1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE取得。
open_file_cache max=102400 inactive=20s; #这个将为打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和打开文件
#数一致,inactive 是指经过多长时间文件没被请求后删除缓存。
open_file_cache_valid 30s; #这个是指多长时间检查一次缓存的有效信息。
open_file_cache_min_uses 1; #open_file_cache指令中的inactive 参数时间内文件的最少使用次数,如果超过这个数字,文
#件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive 时间内一次没被使用,它将被移除。
client_header_timeout 15; #设置请求头的超时时间。我们也可以把这个设置低些,如果超过这个时间没有发送任何数据,nginx将返回request time out的错误
client_body_timeout 15; #设置请求体的超时时间。我们也可以把这个设置低些,超过这个时间没有发送任何数据,和上面一样的错误提示
reset_timedout_connection on; #告诉nginx关闭不响应的客户端连接。这将会释放那个客户端所占有的内存空间。 time out的错误
send_timeout 15; #响应客户端超时时间,这个超时时间仅限于两个活动之间的时间,如果超过这个时间,客户端没有任何活动,nginx关闭连接
server_tokens off; #并不会让nginx执行的速度更快,但它可以关闭在错误页面中的nginx版本数字,这样对于安全性是有好处的。
client_max_body_size 10m; 上传文件大小限制
#连接超时时间 end
#fastcgi调优
fastcgi_buffering on; #默认on,是否缓存fastcgi响应
fastcgi_connect_timeout 600s; #指定连接到后端FastCGI的超时时间。
fastcgi_send_timeout 600s; #向FastCGI传送请求的超时时间。
fastcgi_read_timeout 600s; #指定接收FastCGI应答的超时时间。
fastcgi_buffer_size 64k; #指定读取FastCGI应答第一部分需要用多大的缓冲区,默认的缓冲区大小为fastcgi_buffers指令中的每块大小,可以将这个值设置更小。
fastcgi_buffers 4 64k; #指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答请求,如果一个php脚本所产生的页面大小为256KB,那么会分配4个64KB的缓冲区来缓存,
#如果页面大小大于256KB,那么大于256KB的部分会缓存到fastcgi_temp_path指定的路径中,但是这并不是好方法,因为内存中的数据处理速度要快于磁盘。
#一般这个值应该为站点中php脚本所产生的页面大小的中间值,如果站点大部分脚本所产生的页面大小为256KB,那么可以把这个值设置为“8 32K”、“4 64k”等。
fastcgi_busy_buffers_size 128k; #建议设置为fastcgi_buffers的两倍,繁忙时候的buffer
fastcgi_temp_file_write_size 128k; #在写入fastcgi_temp_path时将用多大的数据块,默认值是fastcgi_buffers的两倍,该数值设置小时若负载上来时可能报502BadGateway
fastcgi_temp_path fastcgi_temp 1 2; #缓存临时目录
fastcgi_intercept_errors on; #这个指令指定是否传递4xx和5xx错误信息到客户端,或者允许nginx使用error_page处理错误信息。
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=fastcgi_cache_zone:128m inactive=1d max_size=10g;
#fastcgi_cache缓存目录,可以设置目录层级,比如1:2会生成16*256个子目录,cache_fastcgi是这个缓存空间的名字,cache是用多少内存(这样热门的内容nginx直接放内存,提高访问速度),
#inactive表示默认失效时间,如果缓存数据在失效时间内没有被访问,将被删除,max_size表示最多用多少硬盘空间。
#fastcgi调优end
#gzip调优
gzip on; #开启压缩功能
gzip_min_length 2k; #设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取,默认值是0,不管页面多大都进行压缩,建议设置成大于1K,如果小与1K可能会越压越大。
gzip_buffers 4 32k; #压缩缓冲区大小,表示申请4个单位为32K的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果。
gzip_http_version 1.1; #压缩版本,用于设置识别HTTP协议版本,默认是1.1,目前大部分浏览器已经支持GZIP解压,使用默认即可
gzip_comp_level 6; ; #压缩比例,用来指定GZIP压缩比,1压缩比最小,处理速度最快,9压缩比最大,传输速度快,但是处理慢,也比较消耗CPU资源。
gzip_typestext/plain text/css text/javascriptapplication/json application/javascript application/x-javascriptapplication/xml; #用来指定压缩的类型,‘text/html’类型总是会被压缩。
gzip_disable "MSIE[1-6]"; #ie浏览器1-6禁用gzip
gzip_vary on; #varyheader支持,改选项可以让前端的缓存服务器缓存经过GZIP压缩的页面,例如用Squid缓存经过nginx压缩的数据
gzip_proxied any;
#gzip调优end
#geoip
geoip_country /usr/local/nginx/geoip/GeoIP.data;
geoip_city /usr/local/nginx/geoip/GeoLiteCity.dat;
#一般是在日志里面使用
log_format ip_log '$geoip_city_country_name $geoip_region_name $geoip_city';
#geoip end
}
nginx-lua