1, 网络 IO 事件模型: use epoll;
在 / etc/nginx/ngin.conf 添加
- events {
- worker_connections 1024;
- use epoll;
- }
2, 进程数量及 CPU 绑定
- # 将 work process 绑定到特定 CPU 上, 避免进程在 CPU 间切换的开销
- worker_cpu_affinity 0001 0010 0100 1000
- #4 内核 8 进程时的设置方法: worker_cpu_affinity 00000001 00000010 00000100 10000000
3, 隐藏软件名及版本信息: http{ server_tokens off;}
4, 日志:
日志切割 \ 轮询
不记录不需要的日志:
- location /nginx-status
- {
- stub_status on;
- access_log off;
- }
访问量
PV: 点击量
UV: 客户量
访问日志的权限设置:
- chown -R root.root /App/logs
- chmod -R 600 /App/logs
5,NGINX 防止 DOS/DDOS***
限制用户并发连接数:
http{ limit_conn_zone $binary_remote_addr zone=perip_conn:10m; }
ngx_http_limit_conn_module: 调用 limit_conn 模块
$binary_remote_addr: 二进制远程地址
zone=perip_conn:10m: 定义 zone 名字叫 perip_conn, 并为这个 zone 分配 10M 内存, 用来存储会话 (二进制远程地址),1m 内存可以保存 16000 会话.
location{ limit_conn perip_conn 1;}
限制用户连接速率:
http{limit_req_zone $binary_remote_addr zone=reqrate:20m rate=10r/s; }
limit_req_zone: 调用 limit_req 模块
rate=10r/s: 频率为每秒 10 个请求
location{ limit_req zone=reqrate burst=5; }
burst=5: 允许超过频率限制的请求数不多于 5 个, 假设 1,2,3,4 秒请求为每秒 9 个, 那么第 5 秒内请求 15 个是允许的, 如果第一秒内请求 15 个, 会将 5 个请求放到第二秒, 第二秒内超过 10 的请求直接 503, 类似多秒内平均速率限制.
来源: http://www.bubuko.com/infodetail-2987863.html