nginx源码安装与安全

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-(默认8k16k)这个指令可以指定连接请求实体的缓冲区大小。如果连接请求超过缓存区指定的值,那么这些请求实体的整体或部分将尝试写入一个临时文件。
(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值指定了客户端与服务器长连接的超时时间,超过这个时间,服务器将关闭连接

 

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;

}

6ip并发限制

limit_conn_zone(这个变量只能在http使用)

http{

  #定义一个名为onelimit_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;

     #定义一个名为allipslimit_req_zone用来存储session,大小是10M内存, #$binary_remote_addr key,限制平均每  秒的请求为5个。

limit_req

location  \{

  # burst爆发的意思,这个配置的意思是设置一个大小为5的缓冲区。

  #nodelay,如果不设置该选项,严格使用平均速率限制请求数,

  limit_req zone=allips burst=5 nodelay;

}

猜你喜欢

转载自blog.csdn.net/chang_an_che/article/details/89404117