Nginx调优思路

安全优化

安全优化是每个服务的第一位

1.站点目录权限的优化 (修改权限755 644 所属用户root,需要上传的目录给予nginx权限)
2. 防盗连接的优化(通过$http_referer实现判断用户来源,对非法的referer 返回错误代码)这一点如果没做 站点流量会上升(帮别人做广告),可能会给公司造成而外的经济损失
3. 日志权限的优化,日志权限不要给nginx用户,日志是分析问题和数据的重要文件,安全必须考虑
4.重要目录迁移或者用目录访问控制用(allow,deny实现)例如配置文件或者程序安装目录
5.上传目录下禁止动态程序的解析(例如static目录下禁止运行扩展名为php py pl sh的文件)防止木马程序上传之后运行
6. 防止域名恶意解析(建立默认ip访问规则),即当用户直接用ip访问的时候 我们返回501错误 类似jd taobao(实现方法建立一个default.conf 配置默认返回501)
7.为nginx降权 实现普通用户启动管理nginx服务
8.隐藏nginx版本 通过server_tokens off实现 很基本
9.站点防止爬虫优化 可以在站点 根目录下建立robots.txt 告知相应的防止爬虫优化,然后通过nginx的http_user_agent 参数实现访问控制

性能优化

性能和安全是互为负相关的方面 最好取其平衡

1.日志优化 在真是rs服务器上关闭静态资源日志记录的功能(l例如jpg css js等)如果并发很大的情况下 要关闭真实服务器的日志记录功能 ,因为日志记录消耗资源io很明显 在负载均衡上开启日志记录即可。
2.配置主要标签的worker_processes数量 根据cpu核数 确定一般是1:1 对多不超过二倍
3.配置cpu亲和力worker_cpu_affinity 平均分配cpu资源
4.配置worker打开的文件数量 worker_rlimit_nofile
5.配置event 标签 调整连接数worker_connections 生产场景一般为4096
6.启高效传输模式 sendfile on
7. 开启资源压缩 gzip on (gzip_comp_level 6 gzip_min_length gzip_types gzip_http_version gzip_buffers )可以通过yslow 浏览器插件检查站点是否启用压缩
8.开启缓存 expires 一般在静态资源下开启缓存功能 例如图片 css (expires 365d,经常变换的图片或者资源要尽量改的时间短一点,因为有些东西不希望到的是未更新的 例如广告 )
9.fastcgi相关参数的优化,以及基于内核的参数优化 sysctl.conf

架构优化

架构优化的目的是综合提升性能和安全

实现原理是把不同的资源(通过扩展名实现)进行拆分,不同的访问进行拆分(通过url实现)也可以叫做解耦,通过这样操作可以提升静态资源的访问效率

1.通过nginx的代理功能对有固定域名的资源 进行不同服务器的指向 把动态静态资源分不同的upstream访问 这样静态资源服务器上不用安装相应的动态资源解析程序 例如tomcat 和php 一般大公司会选择这样的方案 例如淘宝图片服务器 static.taobao.com等等
配置案例

server {
listen 80;
server_name dynamic.wanda.cn;
location / {
proxy_pass http://dynamic_pool;

    }

}

server {
listen 80;
server_name static.wanda.cn;
location / {
proxy_pass http://static_pool;
}
}

2.如果站点没有实现动静资源域名独立 那么可以通过nginx的基于目录和扩展名的的proxy_pass 进行动态静态 资源的不同服务器rs节点的指向 。这一点是中小企业方案

server {
listen 80;
server_name www.wanda.cn;
location /static {
proxy_pass http://image_pool;
}
location / { #默认包含了动态和静态
proxy_pass http://dynamic_pool;
}
}

3. 如果条件准许,最好在nginx代理上面加上proxy_cache的功能 缓存rs节点的静态资源,减少对rs后端的请求,相同的资源 减少请求 就提升了性能

简单介绍一下nginx_cache的实现思路:

首先在nginx代理服务器上 建立一个目录 (挂载到内存下面的 tmpfs格式文件系统)
mount -t tmpfs tmpfs /tmp
然后,在nginx的http标签内 添加以下参数 告知nginx代理 缓存的路径在哪 缓存的zone名称是什么 我们的名字就叫cache 大小为64m缓存
proxy_cache_path /tmp levels=1:2 keys_zone=cache:64m;
在server标签下 加入以下红色内容
server {
listen 80;
server_name www.wanda.cn;
location / {
proxy_pass http://dynamic_pool;
proxy_cache cache;
}
}
重启nginx -s reload

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值