使用Nginx安装第三方模块

Nginx打包安装第三方模块,防止源码编译安装nginx失败的问题 Compiling Third-Party Modules Into Nginx https://serversforhackers.com/compiling-third-party-modules-into-nginx

参考 http://www.geoffstratton.com/2014/03/ubuntu-recompile-nginx-apt-get/

参考 http://serverfault.com/questions/227480/installing-optional-nginx-modules-with-apt-get

Nginx安装lua-nginx-module 扩展Nginx https://github.com/openresty/lua-nginx-module#installation

参考nginx编译安装ngx_lua模块 http://www.phpgao.com/nginx_ngx_lua.html

LUA中文文档 http://cloudwu.github.io/lua53doc

安装lua-nginx-module依赖本机安装lua环境,但每次安装 LuaJIT-2.0.4.tar.gz 都提示安装失败,遂直接使用如下命令安装 lua5.2

sudo apt-get install lua

查看是否安装成功,执行 lua 即可

//////////////////////////////////////////////// ngx_lua_waf ///////////////////////////////////////////////

安装 ngx_lua_waf  构建web防火墙

下载 ngx_lua_waf 

git clone https://github.com/loveshell/ngx_lua_waf waf

复制waf到nginx安装路径 /usr/local/nginx/conf/

在nginx主配置文件的http段添加如下配置项:

lua_package_path "/usr/local/nginx/conf/waf/?.lua";
lua_shared_dict limit 10m;
init_by_lua_file  /usr/local/nginx/conf/waf/init.lua; 
access_by_lua_file /usr/local/nginx/conf/waf/waf.lua;

重启,测试:

curl http://xxxx/test.php?id=../etc/passwd

返回"Please go away~~"字样,说明规则生效。

参考ngx_lua_waf针对性改写 https://www.leavesongs.com/OTHERLAN/diy-my-nginx-lua-waf.html

参考基于ngx_lua模块的waf开发实践 http://drops.wooyun.org/tips/5136

参考nginx配置lua模块和基于lua的waf http://www.52os.net/articles/nginx-install-lua-and-lua-based-waf.html

参考 ngx_lua_waf适应多站点情况的研究 http://www.binky.cn/article/7759.html

参考 Nginx+Lua开发入门 http://jinnianshilongnian.iteye.com/blog/2186448

参考 Ngx_Lua使用分享 http://17173ops.com/2013/11/01/17173-ngx-lua-manual.shtml

Naxsi 是一款优秀的基于白名单的主动防御模块 https://github.com/nbs-system/naxsi

下载下来即可 sudo git clone https://github.com/nbs-system/naxsi.git

Naxsi 代码分析 http://yzprofile.me/2014/01/06/waf-research-naxsi.html

Compiling Nginx with Naxsi on Ubuntu 14.04 LTS https://blog.stickleback.dk/compiling-nginx-with-naxsi-on-ubuntu-14-04-lts/

参考How to Install the NAXSI Nginx Security Module http://www.nginxtips.com/naxsi-nginx-security-module/

参考nginx配合modsecurity实现WAF功能 http://www.52os.net/articles/nginx-use-modsecurity-module-as-waf.html

根据lua-nginx-module介绍安装luajit-2.0会出现问题,输入 lua 发现ubuntu已安装lua5.1版本,于是按提示把错误文件删掉,可以顺利打包nginx.deb

ngx_pagespeed https://github.com/pagespeed/ngx_pagespeed

手动打包到nginx里,在rules下的full 添加 –add-module=lua-nginx-module –add-module=/opt/pagespeed/ngx_pagespeed-release-1.9.32.2-bet

参考 Compiling Third-Party Modules Into Nginx https://serversforhackers.com/compiling-third-party-modules-into-nginx

参考 http://blog.eqoe.cn/posts/setup-nginx-pagespeed.html

参考 http://www.phodal.com/blog/nginx-with-ngx-pagespeed-module-improve-website-cache/

参考 http://blog.icodex.org/2013/05/build-nginx-and-ngx-pagespeed/

NGINX的BROWSER模块(为不同浏览器指定不同首页) http://hunsefee.diandian.com/post/2011-09-16/7318322
Nginx全局基本且高效的配置 http://hao0.me/nginx/2015/04/10/nginx-basic-cfg.html

最新版 nginx内置变量 大全 http://www.cnphp.info/nginx-embedded-variables-lasted-version.html

网站控制同一IP访问请求和连接数量

其实nginx有2个模块:ngx_http_limit_conn_modulengx_http_limit_req_module

可以参考官方文档:

http://nginx.org/cn/docs/http/ngx_http_limit_req_module.html

http://nginx.org/cn/docs/http/ngx_http_limit_conn_module.html

首先在http中定义,如下:

limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

然后到你需要限制的目录下面,server段中,一般就是php请求,如下:

location ~* ^/(.*)\.php?$ {
   limit_conn addr 3;
   limit_req zone=one burst=2 nodelay;
   fastcgi_pass 127.0.0.1:9000;
   fastcgi_index index.php;
   fastcgi_param SCRIPT_FILENAME $host_path/$fastcgi_script_name;
   include fastcgi_params;
}

应用这2条规则后,只要需要执行php脚本的这些页面同一个IP只许建立3个连接,并且每秒只能有1个请求(突发请求可以达到2个)。

虽然这样的规则一般来说对正常的用户不会产生影响(极少有人在1秒内打开3个页面),但是为了防止影响那些手快的用户访问,可以在nginx中自定义503页面,503页面对用户进行提示,然后自动刷新,这个参数可以根据自己的情况进行更改,这样不管攻击者是多个ip还是单个ip攻击都可以防御到,

参考 一次大规模网站攻击防御报告 http://www.cnphp6.com/archives/86032

参考Nginx ngx_http_limit_conn_module模块基本指令整理 http://www.iigrowing.cn/nginx-ngx-http-limit-conn-module-mo-kuai-ji-ben-zhi-ling-zheng-li.html

参考漏桶速率控制原理 http://www.cnphp.info/howto-block-hack-attach-with-nginx-limit-req.html

参考 全球互联网攻击实时监控图(http://map.ipviking.com/

查看Nginx安装了哪些模块

有时候安装的时候不知道哪些模块忘了安装需要查看下已经安装的模块。

查看安装了哪些模块,小写v查看简单的版本号信息

$ nginx -V
nginx version: nginx/1.4.6 (Ubuntu)
built by gcc 4.8.2 (Ubuntu 4.8.2-19ubuntu1)
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_spdy_module --with-http_sub_module --with-http_xslt_module --with-mail --with-mail_ssl_module

还有一个格式化之后的命令,查看起来方面

$2>&1 nginx -V | tr ' ' '\n' | grep ssl
--with-http_ssl_module
--with-mail_ssl_module

2 thoughts on “使用Nginx安装第三方模块

Liu Jie进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注