nginx 安全配置和限制访问

nginx基本安全配置

配置ssl证书

listen 443 ssl;
ssl_certificate /usr/local/nginx/conf/server.crt;
ssl_certificate_key /usr/local/nginx/conf/server.key;

关闭目录浏览功能

http {
     autoindex off;
}

隐藏版本号

http {
     server_tokens off;
}

请求头部和连接时间配置

http {
#设置客户端请求头读取超时时间,超过这个时间还没有发送任何数据,Nginx将返回“Request time out(408)”错误
client_header_timeout 15;
#设置客户端请求主体读取超时时间,超过这个时间还没有发送任何数据,Nginx将返回“Request time out(408)”错误
client_body_timeout 15;   
#上传文件大小限制
client_max_body_size 100m;
#指定响应客户端的超时时间。这个超过仅限于两个连接活动之间的时间,如果超过这个时间,客户端没有任何活动,Nginx将会关闭连接。
send_timeout    600;
#设置客户端连接保持会话的超时时间,超过这个时间,服务器会关闭该连接。
keepalive_timeout 60;
}

ip访问控制

#设置网站目录的访问权限
location /download {
    allow 192.168.1.1/24;
    allow 120.20.93.79;
    deny all;
}

nginx高级安全配置

访问权限控制

server {
    ...
    auth_basic "website login";
    auth_basic_user_file conf/.htpasswd;
}

 连接数和请求速率控制

limit_req_zone $binary_remote_addr zone=allips:10m rate=20r/s;
limit_conn_zone   ip_zone  $binary_remote_addr  10m;
......
location {
            ...

            #限制每ip每秒不超过20个请求,漏桶数burst为5
            #brust的意思就是当每秒超过20个请求时,5个以内的请求会被延迟访问,超过5个的直接返回503
            #nodelay,设置该选项,将严格使用平均速率限制请求数,超过请求频率的直接返回503
            limit_req zone=allips burst=5 nodelay;
            limit_conn ip_zone 20;          #连接数限制
limit_rate 500k;    
... }
原文地址:https://www.cnblogs.com/imcati/p/11750441.html