本人接触的优化主要分为三大类 黑体的为本模块下的重点

 ---------------安全优化

安全在生产场景中是第一位的

1.1 站点目录权限的优化 (修改权限755 644 所属用户root,需要上传的目录给予nginx权限

1.2 防盗连接的优化(通过$http_referer实现判断用户来源,对非法的referer 返回错误代码)这一点如果没做 站点流量会上升(帮别人做广告),可能会给公司造成而外的经济损失

1.3 日志权限的优化,日志权限不要给nginx用户,日志是分析问题和数据的重要文件,安全必须考虑

1.4 重要目录迁移或者用目录访问控制用(allow,deny实现)例如配置文件或者程序安装目录

1.5 上传目录下禁止动态程序的解析(例如static目录下禁止运行扩展名为php py pl sh的文件)防止木马程序上传之后运行

1.6 防止域名恶意解析(建立默认ip访问规则),即当用户直接用ip访问的时候 我们返回501错误  类似jd taobao(实现方法建立一个default.conf 配置默认返回501

1.7 为nginx降权 实现普通用户启动管理nginx服务

1.8 隐藏nginx版本 通过server_tokens off实现 很基本

1.9 站点防止爬虫优化 可以在站点 根目录下建立robots.txt 告知相应的防止爬虫优化,然后通过nginx的http_user_agent 参数实现访问控制

 -----------------性能优化

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

2.1    日志优化 在真是rs服务器上关闭静态资源日志记录的功能(l例如jpg css js等)如果并发很大的情况下 要关闭真实服务器的日志记录功能 ,因为日志记录消耗资源io很明显 在负载均衡上开启日志记录即可。

2.2    配置主要标签的worker_processes数量 根据cpu核数 确定一般是1:1 对多不超过二倍

2.3    配置cpu亲和力worker_cpu_affinity 平均分配cpu资源

2.4    配置worker打开的文件数量 worker_rlimit_nofile

2.5    配置event 标签 调整连接数worker_connections 生产场景一般为4096

2.6    开启高效传输模式 sendfile on

2.7    开启资源压缩 gzip on (gzip_comp_level 6 gzip_min_length gzip_types gzip_http_version gzip_buffers )可以通过yslow 浏览器插件检查站点是否启用压缩

2.8    开启缓存 expires 一般在静态资源下开启缓存功能 例如图片 css (expires 365d,经常变换的图片或者资源要尽量改的时间短一点,因为有些东西不希望到的是未更新的 例如广告

2.9    fastcgi相关参数的优化,以及基于内核的参数优化 sysctl.conf

  -------------------架构优化

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

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

3.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;

}

}

3.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.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

重新访问以下站点目录 带有图片的网页 然后可以看到/tmp目录下生成了缓存文件  ,通过配置 日志参数 添加 $upstream_cache_status 再次访问 可以检测是否去使用了缓存 如果状态为hit说明命中 配置成功

好了 总结了一个多小时 关于nginx优化如果大家有更好的方法 欢迎一起探讨

nginx网站架构优化思路(原)的更多相关文章

  1. 各大型网站架构分析收集-原网址http://blog.csdn.net/lovingprince/article/details/3379710

    1. PlentyOfFish 网站架构学习http://www.dbanotes.net/arch/plentyoffish_arch.html 采取 Windows 技术路线的 Web 2.0 站 ...

  2. 【nginx网站性能优化篇(3)】反向代理实现负载均衡

    注意,本篇文章为负载均衡的理论篇,后续找个机会推出实战篇.理论篇主要讲述如何配置负载均衡,配置负载均衡不难.难的是真正的实战,比如如何做到多服务器之间的数据共享(session,file等),多cac ...

  3. 【nginx网站性能优化篇(2)】反向代理实现Apache与Nginx的动静分离(LNMPA)

    为什么要使用反向代理 具体请参考这篇博文:[Linux常识篇(1)]所谓的正向代理与反向代理 在虚拟机上配置反向代理的步骤 首先假设你已经假设好了LNMP架构了,这时我们还要安装Apache和php, ...

  4. 【nginx网站性能优化篇(1)】gzip压缩与expire浏览器缓存

    gzip压缩 概述 网页在服务器端经过了gzip或者其他格式的压缩后的输出明显减少了content-length字节,当访问过百万时,这些减少的字节就会变为客观的流量给节约下来;从而减轻服务器的压力以 ...

  5. nginx ssl通讯优化思路

    TLS通讯过程中主要做的两件事情: 1.交换密钥 2.加密数据 如果优化的话,主要也是从这两个点来考虑优化: 1.nginx 打开session cache 如一天内不需要再次协商密钥. 2.小文件较 ...

  6. Nginx优化防爬虫 限制http请求方法 CDN网页加速 架构优化 监牢模式 控制并发量以及客户端请求速率

    Nginx防爬虫优化 Robots协议(也称为爬虫协议,机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可 ...

  7. 企业级Nginx服务基础到架构优化详解

    1.隐藏nginx header版本号 2.更改源码隐藏软件名称 3.更改nginx默认用户及用户组 4.配置nginx worker进程个数 5.根据CPU核数进行nginx进程优化 6.nginx ...

  8. Linux实战教学笔记38:企业级Nginx Web服务优化实战(下)

    四,Nginx站点目录及文件URL访问控制 4.1 根据扩展名限制程序和文件访问 Web2.0时代,绝大多数网站都是以用户为中心多的,例如:bbs,blog,sns产品,这几个产品都有一个共同特点,就 ...

  9. 企业级Nginx Web服务优化实战

    web优化一览总结表 优化类型 优化说明 优化方法 安全优化 隐藏nginx版本信息优化 修改nginx配置文件实现优化 server_tokens off: 修改nginx版本信息优化 修改ngin ...

随机推荐

  1. 测试一下PHP官方的新一代PHP加速插件ZendOpcache的性能及配置

    过程不表,都比较顺利 参考如下URL: http://www.lvtao.net/server/ZendOpcache.html 大家知道目前PHP的缓存插件一般有三个:APC.eAccelerato ...

  2. Codeforces 459E Pashmak and Graph

    http://www.codeforces.com/problemset/problem/459/E 题意: 给出n个点,m条边的有向图,每个边有边权,求一条最长的边权上升的路径的长度. 思路:用f存 ...

  3. zabbix 启用分区表后需要关闭Housekeeper

    <pre name="code" class="html">Zabbix Housekeeper changes: 使用分区表需要关闭zabbix的 ...

  4. ZZY的宠物

    Description ZZY领养了一对刚刚出生的不知名小宠物..巨萌巨可爱!!...小宠物的生命为5个单位时间并且不会在中间出意外翘辫子(如: 从0出生能活到5但活不到6)..小宠物经过2个单位时间 ...

  5. 潘石屹的SOHO小报猝死

    东莞时报多媒体数字报刊平台 潘石屹的SOHO小报猝死

  6. 基于控制权限和登录验证跳转的django登录界面的实现

    django框架提供了出去登录和退出系统的login和logout的视图函数,本实现中使用系统自带的是视图函数.需要在settings.py,urls.py,views.py和模板文件等几个方面进行考 ...

  7. Linux中部署JAVA程序

    JAVA程序在开发完成后,需要部署到服务器,如果是WEB项目,需要部署到WEB服务器,否则部署到应用服务器. JAVA是跨平台的编程语言,服务器的操作系统可以是Windows.Linux或者其它,下面 ...

  8. 百度Clouda的初步探索

    最近一直比较关注百度Clouda,参加了数次百度Clouda团队举办的技术沙龙,也利用了一些时间读了开发文档,下面谈谈我对这个框架的初步理解: 1.  轻应用和Clouda的区别和联系:       ...

  9. 70个经典的 Shell 脚本面试问题

    转载自:http://www.imooc.com/article/1131 1) 如何向脚本传递参数 ? ./script argument 例子: 显示文件名称脚本 ./show.sh file1. ...

  10. NetAnalyzer笔记 之 二. 简单的协议分析

    [创建时间:2015-08-27 22:15:17] NetAnalyzer下载地址 上篇我们回顾完了NetAnalyzer一些可有可无的历史,在本篇,我决定先不对NetAnalyzer做介绍,而是先 ...