nginx源码安装
1.下载nginx源码包
wget https://nginx.org/download/nginx-1.14.2.tar.gz
2.检查并安装先决条件
GCC、 PCRE库、 zlib库、 OpenSSL库、等等
3.解压源码包
tar –zxvf nginx-1.14.2.tar.gz
4.预编译
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
5.make
6.make install
7.检查nginx 是否安装成功
/usr/local/nginx/sbin/nginx -V
nginx配置文件nginx.conf
1.全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
2.events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
3.http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,日志自定义,是否使用sendfile传输文件,连接超时时间,等。
4.server块:配置虚拟主机的相关参数,一个http中可以有多个server。
5.location块:配置请求的路由,以及各种页面的处理情况。
6.upstream 块:负载均衡
Nginx安全策略
1.修改nginx版本号
编译之前修改src/core/nginx.h文件中的版本号信息
2.删除所有不需要的Nginx模块
通过预编译命令,设置编译哪些模块:./configure –without-http_autoindex_module –without-http_ssi_module
3.控制缓冲区溢出攻击
(1)client_body_buffer_size 1k-(默认8k或16k)这个指令可以指定连接请求实体的缓冲区大小。如果连接请求超过缓存区指定的值,那么这些请求实体的整体或部分将尝试写入一个临时文件。
(2)client_header_buffer_size 1k-指令指定客户端请求头部的缓冲区大小。绝大多数情况下一个请求头不会大于1k。
(3)client_max_body_size 1k-指令指定允许客户端连接的最大请求实体大小。
(4)large_client_header_buffers-指定客户端一些比较大的请求头使用的缓冲区数量和大小。请求字段不能大于一个缓冲区大小,如果客户端发送一个比较大的头,nginx将返回”Request URI too large” (414)
(5)keepalive_timeout 5 值指定了客户端与服务器长连接的超时时间,超过这个时间,服务器将关闭连接
4、限制可用方法
limit_except GET POST {
deny all;
}
5、限制ip
•allow 白名单
•deny黑名单
location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.0.0/16;
deny all;
}
6、ip并发限制
•limit_conn_zone(这个变量只能在http使用)
http{
#定义一个名为one的limit_zone,大小10M内存来存储session,
#以$binary_remote_addr 为key
$binary_remote_addr zone=one:10m;
}
•limit_conn(这个变量可以在http, server, location使用)
location {
limit_conn one 20;
#连接数限制 #带宽限制,对单个连接限数,如果一个ip两个连接,就是500x2k
limit_rate 500k;
}
7、限制IP访问频率
•limit_req_zone(这个变量只能在http使用)
limit_req_zone $binary_remote_addr zone=allips:10m rate=5r/s;
#定义一个名为allips的limit_req_zone用来存储session,大小是10M内存, #以$binary_remote_addr 为key,限制平均每 秒的请求为5个。
•limit_req
location \{
# burst爆发的意思,这个配置的意思是设置一个大小为5的缓冲区。
#nodelay,如果不设置该选项,严格使用平均速率限制请求数,
limit_req zone=allips burst=5 nodelay;
}
转载:https://blog.csdn.net/chang_an_che/article/details/89404117