nginx优化思路
安全优化
1.隐藏nginx版本信息优化
修改nginx配置文件实现优化
server_tokens off;
2.修改nginx版本信息优化
修改nginx源码配置文件
nginx-xxx/src/core/nginx.h
nginx-xxx/src/http/ngx_http_header_filter_module.c
nginx-xxx/src/http/ngx_http_special_response.c
3. 修改nginx软件 work_processes 进程用户信息
修改nginx默认用户,利用配置文件参数实现
修改nginx默认用户,采用编译参数来实现
user www www;
4.优化 nginx 服务上传文件限制
client_max_body_size 设置客户端请求报文主体最大尺寸
用户上传文件 大小
5.Nginx 图片及目录防盗链解决方案
根 据 HTTP referer 实现防 盗链
Nginx 图 片 及 目录防 盗链解 决方案
用 户 从 哪 里 跳转过 来的( 通过域 名) referer 控 制
if ( $http_referer !~
“ www.baidu.com” ) {
return 403;
}
根 据 cookie 防盗 链
cookie 和 session 区别?通 过 加 密 变 换访问 路径实 现防盗 链
在 产 品 设 计 上解决 盗链方 案
6. Nginx 站点目录文件及目录权限优化
只 将 用 户 上 传数据 的目录 设置为 755, 用户和 组使用 nginx
其 余 目 录 和 文件为 755/644,用户 和组使 用 root
网 站 相当于 www 用户
- 站 点 目 录 整 体
文 件 和 目录 file 644 dir 755 root
root
- 用户上传 目 录
/upload
文 件 和目录 file 644 dir 755 www www
- 指 纹 认证系统 (md5sum )
7.Nginx 放爬虫优化
利 用 robots.txt 机 器人协 议防止 爬虫( 君子协 议)
在网站 站 点 目录下 面,放 robots.txt 文 件
利 用 $http_user_agent 变量阻 止爬 虫代理 访问( 2 种方 法)
Nginx 防 爬 虫 优化(spider|bot)利 用 程序开发验证码信息, 阻 止 进行爬虫
sem 百 度 竞 价搜 索 引 擎 : 把 网 址 页 面 收入 进来 方 便 大 家 搜索 的时候 能
找 到
公 司 爬 取 用 户数据
8.利用 Nginx 限制请求访问
利 用 $request_method 限制请 求方法
9.使用普通用户启动 Nginx (nginx 监牢模式 keep in jail)
利 用 nginx –c 参 数启 动 nginx 多 实例, 使 master 进 程让普
通用户管理
普 通 用 户 无 法使用 1-1024 端口
80 --转 发 iptables-- >8080
10.控制 nginx 并发连接数
利 用 limit_conn_zone 参 数和
server_name r 变量限 制
nginx 虚 拟 主 机总连 接数
11.控 制 客 户 端 请求 Nginx 的速 率
性能优化
1.修改nginx软件work_processes进程数量
woker_processes 8
一般和CPU的核数设置一致;高并发可以和CPU核数的2倍
lscpu
/proc/cpuinfo
top按1
一个核心处理一件事情
intel 超线程技术
一个核心可以处理两件事情
2.优化 nginx 服务进程均匀分配到不同的CPU进行处理
利用 worker_cpu_affinity进行优化(cpu亲和力)让CPU的每个核心 平均
4颗 CPU 优化配置参数为 0001 0010 0100 1000
2颗 CPU 优化配置参数为 0101 1010;
worker_cpu_affinity 0101 1010;
worker_cpu_affinity auto;
Linux 系统设置 CPU 亲和力 taskset(15k)
3.优化 nginx 事件处理模型
利 用 use epoll 参数修 改事件 模型为 epoll 模 型
事件模型指定配置 参数放 置在 event 区块 中
nginxepol l 处理数据 异步
apache select 处理数据同 步
4.优化 nginx 单进程客户端连接数
利 用 worker_connections 连接参 数进行 调整
用 户 最 大 并 发连接 数=worker 进程数 *worker 连接数
5.优化 nginx 服务 进程打开文件数
利 用 worker_rlimit_nofile 参数 进行 调整(65535)
6.优化 nginx 服务 数据高效传输模式
利 用 sendfile on 开 启高效 传输模 式
tcp_nopush on 表 示 将数 据积攒 到一定 的量再 进行传 输
tcp_nodelay on 表 示将数 据信息 进行快 速传输
7.优化 nginx 服务超时信息
keepalive_timeout 优化 客户端 访问 nginx 服务端 超时时 间
http 协 议 特 点: 连 接 断开后会给 你保留 一段时 间
client_header_timeout 优化服 务端读 请求头 超时时 间
client_body_timeout 优化两 个请求 主体发 送间隔 超时时 间
send_timeout 优化 两个响 应信息 的间隔 超时时 间
8.优化 nginx 服务与 FastCGI 连接缓存与缓冲信息
优化利用 FastCGI 与 PHP 连 接缓冲 信息
优化利用 FastCGI 与 PHP 连 接缓存 信息
参 考 下面图 :fastcgi buffer 与 cache
9.配置 Nginx gzip 压缩实现性能优化(下面有案例)
利 用 gzip 命 令进行 对数据 信息压 缩优化
从 而 节 省 网 站带宽 资源 gzip 配置
10.配置 Nginx expirex 实现让客户端缓存数据
利用 location 匹配相应要缓存的信息,利用 expires 参数结合事件信息进行缓存。
把数据缓存到浏览器中。
expires 客户端缓存图片或静态资源设置
日志优化
1.配置 Nginx 服务相关日志操作
进 行 日志文件轮询 切割
1.yum 安 装 nginx,自动 切割 (logrotate)
2.编 译 安 装 手动 切割 (logrotate)
部分日志 内 容不进 行记录 ,节省 系统磁 盘空间
对 日 志 文 件 进行授 权logrotate 日 志 切 割工具 + 系 统 定 时 任务
kill -USR1
cat /var/run/nginx.pid
2.Nginx 站点目录及文件 URL 访问控制
在 动 态 解 析 配置前 面,设 置限制 特定目 录下扩 展名文 件解析
限制指定目录 uri 信 息访问 ,利用 禁止策 略和返 回错误 状态
码
限 制 用 户 访 问,利 用白名 单和黑 名单方 式
禁 止 非 法 域 名解析 访问企 业网站
感知优化
1.Nginx 错误页面的优雅显示
对 错 误 代 码 实行本 地页面 跳转
优雅显示错误页面 放到本 地单独 目录下 ,进行 优雅显 示
改 变 状 态 码 为新的 状态码 ,并显 示指定 的文件 内容
错误状态码 URL 重定向
将 错 误 状 态 码重定 向到一 个 location
全面优化
1. Nginx 网站 CDN 加速优化
2.Nginx 程序架构优化
利 用 程 序 或 反向代 理实现 架构访 问分离 解耦优 化