安装nginx并为nginx添加sysguard模块

如果nginx被攻击或者访问量突然变大,nginx会因为负载变高或者内存不够用导致服务器宕机,最终导致站点无法访问。解决方法是利用淘宝开发的模块nginx-http-sysguard,主要用于当负载和内存达到一定的阀值之时,会执行相应的动作,比如直接返回503,504或者其他的.一直等到内存或者负载回到阀值的范围内,站点恢复可用。简单的说,这个模块是让nginx有个缓冲时间。

我使用的操作系统是Ubuntu12.0.4,下面的操作都以该系统为基础。

首先到官网上下载nginx1.12.1.tar.gz稳定版,我们使用源码包安装方式

http://nginx.org/en/download.html

在虚拟机的/opt目录下新建一个文件夹nginx1.12.1,将下载的源码包放到该文件夹内,在该文件夹中解压源码包,进入解压后的文件夹,进行配置

cd /opt/nginx-1.12.1/
tar -zxvf nginx1.12.1.tar.gz
cd nginx-1.12.1/
./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --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_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_perl_module=dynamic --with-threads --with-stream --with-stream_ssl_module --with-stream_geoip_module=dynamic --with-http_slice_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --with-http_v2_module --with-cc-opt=‘-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2‘ --with-ld-opt=‘-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed‘

配置的参数是直接从另一台机器上copy过来的,这台虚拟机第一次装nginx,配置的时候报很多错,缺少很多库

报错:adding module in debian/extra/njs-0.1.0/nginx
   ./configure: error: no debian/extra/njs-0.1.0/nginx/config was found

解决:将配置参数中的“--add-dynamic-module=debian/extra/njs-0.1.0/nginx”删掉

报错:./configure: error: SSL modules require the OpenSSL library.

解决:apt-get install openssl libssl-dev

报错:./configure: error: the HTTP XSLT module requires the libxml2/libxslt libraries.

解决:apt-get install libxml2-dev libxslt-dev

报错:/configure: error: the HTTP image filter module requires the GD library.

解决:apt-get install libgd2-xpm libgd2-xpm-dev

报错:./configure: error: the GeoIP module requires the GeoIP library.

解决:apt-get install libgeoip-dev

我遇到的问题就这些,然后这些库都安装完后,重新配置,然后编译make

编译过程中遇到的问题

报错:/usr/bin/ld: cannot find -lperl

解决:apt-get install libperl-dev

然后编译通过,然后安装make install,nginx1.12.1安装完了

接下来添加nginx-http-sysguard模块,从官网上下载这个模块

https://github.com/alibaba/nginx-http-sysguard/archive/master.zip

解压到/opt/nginx-1.12.1/中,然后打补丁

cd /opt/nginx-1.12.1
patch -p1 < ../nginx-http-sysguard-master/nginx_sysguard_1.3.9.patch

用nginx -V查看安装命令,然后再次配置一次,在之前的配置命令后面加上 --add-module=/opt/nginx-1.12.1/nginx-http-sysguard-master

然后安装编译make && make install

nginx安装好后测试一下

在nginx.conf中server段中添加

sysguard on;
sysguard_load load=0.01 action=/loadlimit;
sysguard_mem swapratio=20% action=/swaplimit;
location /loadlimit {
return 404;
}
location /swaplimit {
return 503;
}

并在server中配置服务器的网站根目录路径root /Disk/image;

定义默认请求的路径

启动/usr/sbin/nginx -c /etc/nginx/nginx.conf

启动时报错:[emerg] getpwnam("nginx") failed

解决:useradd nginx 新建一个nginx用户

启动成功,在/Disk/image下放一个图片,在浏览器上访问这个图片可以访问到

uptime查看cpu负载情况

当load average最左边的值高于0.01时,图片就访问不到了。并且页面上会给出提示。

当cpu平均负载降下来的时候就又可以访问到了

时间: 2024-12-05 07:18:10

安装nginx并为nginx添加sysguard模块的相关文章

如何给在用的nginx添加新模块?

有一个在用的nginx,以yum方法安装的,怎样在不改动配置的情况下,为它添加模块. 以添加spdy模块为例. 编译新模块 预编译 ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin --conf-path=/etc/nginx/nginx.conf --pid-path=/run/nginx.pid --error-log-path=/var/log/nginx/error.log --with-http_spdy_module --wi

NGINX编译安装后添加新模块的方法

刚忙完研发又有新的需求过来,测试服务器的nginx需要有HttpUpstreamRequestHashModule和HttpStubStatusModule:擦!安装软件环境时怎么不说清楚:妹的,悲剧. 测试服务器崩溃的是不是我安装的软件,天啊.赶紧搞吧!!! 环境:centos 6.4 64位 编译安装nginx 1:查看nginx版本和安装时间带的具体参数  /usr/local/nginx/sbin/nginx  -V 2:下载相应的版本的nginx源码包[nginx-1.5.11.tar

Linux下Nginx的安装、升级及动态添加模块

系统基于ubuntu server 14.04.4 amd64 安装 第一步 下载并解压Nginx压缩包 从Nginx官网下载Nginx,或者在Linux上执行wget http://nginx.org/download/nginx-1.10.1.tar.gz命令直接下载解压nginx-1.10.1.tar.gz文件: tar zxvf nginx-1.10.1.tar.gz 第二步 配置 cd nginx-1.10.1 ./configure --prefix=/usr/local/nginx

原已经安装好的nginx,现在需要添加一个未被编译安装的模块--echo-nginx-module-0.56

为了测试一个NGINX变量,将NGINX加了一个编译模板echo-nginx-module-0.56. 参照如下文件 1,先看以前NGINX有哪些东东. sbin/nginx -Vnginx version: nginx/1.6.0built by gcc 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC) TLS SNI support enabledconfigure arguments: --prefix=/XXXX/lnmp/nginx --user=ngin

给已经编译安装了的nginx 添加http_ssl_module模块

环境:centos6.7 因为需要https ,要用到http_ssl_module模块,但http_ssl_module并不属于nginx的基本模块所以自己重新编译添加 1.首先看下内核和系统的版本号. [[email protected] ~]# uname -a Linux zabbix.nnkj.com 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux [[em

ubuntu 编译安装nginx 并添加substitutions4nginx模块

1.首先创建用户组sudo groupadd www 2.创建用户sudo useradd -g www www 3.安装nginx依赖包sudo apt-get install libpcre3-dev zlibc zlib-bin libssl-dev 4.安装makesudo apt-get install make 5.安装gitsudo apt-get install git 6.下载substitutions4nginxgit clone https://github.com/yao

nginx添加sticky模块-cookie保持会话

cookie不同于session,一个存于客户端,一个存于服务端. 环境nginx 1.8.0 centos6.X sticky:1.2.5  wget https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/get/master.tar.gz cookie负载均衡相比iphash来比其中一个特点比较明显:内网nat用户的均衡.而iphash无法做到. yum install openssl openssl-devel 先停止ngin

nginx添加 nginx_heath模块

原因?为什么会使用nginx_heath 这个模块,主要是如nginx+tomcat部署的时,tomcat挂了之后nginx->upstream 轮询是可以踢掉挂掉的tomcat服务的,如果部署的机器挂了之后nginx轮询是不能踢掉的,如果服务再去请求,就会出现请求超时! 1.ngx_http_proxy_module 模块和ngx_http_upstream_module模块(自带) 官网地址:http://nginx.org/cn/docs/http/ngx_http_proxy_modul

nginx添加ssl模块

原已经安装好的nginx,现在需要添加一个未被编译安装的ssl模块: nginx -V 可以查看原来编译时都带了哪些参数 原来的参数:--prefix=/app/nginx 添加的参数: --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module 步骤如下: 1. 使用参数重新配置: ./configure --prefix=/app/nginx -user=nobody -group=nobod