今天制作了一个nginx的srpm包,分享给大家,主要是精简了nginx编译参数,去掉了不常用的mail、ipv6等模块,集成了第三方模块gperftools、GeoIP、nasxi、nginx_upstream_hash、ngx_cache_purge。默认的配置文件更适合lnmp或者负载均衡。

      gperftools 是谷歌性能优化工具包,利用它的tcmalloc库,可提高nginx的内存使用效率;

     GeoIP是一个地理位置信息库;

       nasxi是为nginx量身定制的高性能web应用防火墙,有点类似于apache的mod_security,可以有效防止XSS跨站***和sql注入。

       nginx_upstream_hash是nginx负载均衡算法,在后端是缓存系统(squid/varnish/memcached等)时,可以极大提高缓存命中率和缓存质量。

       ngx_cache_purge 是nginx作为缓存服务器时,清除nginx自身缓存的模块。

 

安装编译方法(依赖epel仓库)

   
   
   
   
  1. yum groupinstall "development tools" -y 
  2. yum install GeoIP-devel gperftools-devel zlib-devel pcre-devel openssl-devel --enablerepo=epel -y 
  3.  
  4. rpm -ivh nginx-1.2.8.excel.src.rpm    
  5. cd ~/rpmbuild/SPEC    
  6. rpmbuild -bp nginx.spec    
  7. rpmbuild -ba nginx.spec    
  8. rpm -ivh ~/rpmbuild/RPMS/x86_64/nginx-1.2.8-1.el6.excel.x86_64.rpm  

如果还缺什么依赖包,根据提示,直接yum安装。  

 

编译参数 

   
   
   
   
  1. # nginx -V 
  2. nginx version: nginx/1.2.8 
  3. built by gcc 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC) 
  4. TLS SNI support enabled 
  5. configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_geoip_module --with-http_sub_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-google_perftools_module --add-module=/root/rpmbuild/BUILD/nginx-1.2.8/naxsi-core-0.50/naxsi_src --add-module=/root/rpmbuild/BUILD/nginx-1.2.8/nginx_upstream_hash --add-module=/root/rpmbuild/BUILD/nginx-1.2.8/ngx_cache_purge --with-file-aio --with-cc-opt='-O2 -g' 

 

gperftools 用法见配置文件,检查方法

   
   
   
   
  1. lsof -n |grep tcmalloc 

 

naxsi 用法见配置文件

 

nginx_upstream_hash用法

   
   
   
   
  1. upstream backend {   
  2.     server 127.0.0.1:81  
  3.     server 127.0.0.1:82  
  4.     ...  
  5.     hash    $request_uri;   
  6.     hash_method  crc32;  
  7.     hash_again  10;          # default 0   
  8.     }   

注意:server语句不能写入weight等其他参数,原因见第一个参考文章

 

ngx_cache_purge使用方法

   
   
   
   
  1. http { 
  2.     proxy_cache_path  /tmp/cache  keys_zone=tmpcache:10m; 
  3.  
  4.     server { 
  5.         location / { 
  6.             proxy_pass         http://127.0.0.1:8000; 
  7.             proxy_cache        tmpcache; 
  8.             proxy_cache_key    $uri$is_args$args; 
  9.         } 
  10.  
  11.         location ~ /purge(/.*) { 
  12.             allow              127.0.0.1; 
  13.             deny               all; 
  14.             proxy_cache_purge  tmpcache $1$is_args$args; 
  15.         } 
  16.     } 

 

后缀名限制,附件下载后直接去掉.zip后缀

 

参考文章 

http://www.sudone.com/nginx/nginx_url_hash.html

https://github.com/evanmiller/nginx_upstream_hash

https://github.com/FRiCKLE/ngx_cache_purge/

https://github.com/tilo/nginx-rpm/blob/master/nginx.spec

https://code.google.com/p/naxsi/wiki/Howto#Installing_nginx_+_naxsi