nginx proxy优化
常用优化要点
当nginx用于反向代理时,每个客户端将使用两个连接:
一个用于响应客户端的请求,另一个用于到后端的访问;
如果机器是两核CPU,例如:
|
1
2
|
$ grep ^proces /proc/cpuinfo | wc -l2 |
那么,可以从如下配置起步:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# One worker per CPU-core.worker_processes 2;events { worker_connections 8096; multi_accept on; use epoll;}worker_rlimit_nofile 40000;http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 15;} |
标准的代理配置
下面是一个基本的反向代理配置模板,将所有请求都转发给指定的后端应用。
例如,到http://your.ip:80/的请求都将重定向到 http://127.0.0.1:4433/ 私有服务器:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# One process for each CPU-Coreworker_processes 2;# Event handler.events { worker_connections 8096; multi_accept on; use epoll;}http { # Basic reverse proxy server upstream backend { server 127.0.0.1:4433; } # *:80 -> 127.0.0.1:4433 server { listen 80; server_name example.com; ## send all traffic to the back-end location / { proxy_pass http://backend; proxy_redirect off; proxy_set_header X-Forwarded-For $remote_addr; } }} |
下面,我们将在此基础上进行优化。
缓冲控制
如果禁止缓冲,那么当Nginx一收到后端的反馈就同时传给客户端。
nginx 不会从被代理的服务器读取整个反馈信息。
nginx可从服务器一次接收的最大数据大小由 proxy_buffer_size 控制。
|
1
2
3
|
proxy_buffering off;proxy_buffer_size 128k;proxy_buffers 100 128k; |
缓存和过期控制
上面的配置是将所有请求都转发给后端应用。为避免静态请求给后端应用带来的过大负载,我们可以将nginx配置为缓存那些不变的响应数据。
这就意味着nginx不会向后端转发那些请求。
下面示例,将 *.html, *.gif, 等文件缓存30分钟。:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
http { # # The path we'll cache to. # proxy_cache_path /tmp/cache levels=1:2 keys_zone=cache:60m max_size=1G;} ## send all traffic to the back-end location / { proxy_pass http://backend; proxy_redirect off; proxy_set_header X-Forwarded-For $remote_addr; location ~* \.(html|css|jpg|gif|ico|js)$ { proxy_cache cache; proxy_cache_key $host$uri$is_args$args; proxy_cache_valid 200 301 302 30m; expires 30m; proxy_pass http://backend; } } |
这里,我们将请求缓存到 /tmp/cache,并定义了其大小限制为1G。同时只允许缓存有效的返回数据,例如:
|
1
|
proxy_cache_valid 200 301 302 30m; |
所有响应信息的返回代码不是 "HTTP (200|301|302) OK" 的都不会被缓存。
对于例如workpress的应用,需要处理cookies 和缓存的过期时间,通过只缓存静态资源来避免其带来的问题。
验证
优化配置的效果需要实践检验,建议部署一个监控工具,监控的内容应包括:
Nginx:开源版提供的监控指标,仅有如下7个指标:
Connections,Accepts,Handled,Requests,Reading,Writing,Waiting,
为便于分析统计,在Hyperic中可扩展为10个指标,增加了三个派生指标,每分钟的接收,请求和处理的数量:
Accepts per Minute,Handled per Minute,Requests per Minute

从操作系统的角度:应包括Nginx进程的CPU使用率,内存占用,整体CPU使用率,交换区使用率等指标。
如果是在虚拟机上运行,还应关注 操作系统的 ST( Steal Time)指标,判断是否有超卖,过载等现象;
超卖:超卖是指主机商在一台服务器上放了太多的VPS账户,如果遇到所有的VPS账户同时使用所有的资源,就会出现服务器无法访问的情况,严重时硬件瘫痪 、数据丢失。但超卖很难察觉。有时通过 ST 指标可以看到。
nginx proxy优化的更多相关文章
- Nginx服务优化
1.1Nginx.conf配置文件基本参数优化 1.1.1 隐藏nginx header内版本号信息 一些特定的系统及服务漏洞一般都和特定的软件及版本号有关,我们应尽量隐藏服务器的敏感信息(软件名称 ...
- The server of Nginx(三)——Nginx企业级优化
相信看过我之前apache文章的朋友们,对服务优化也有了一个大概的了解,相比较而言,Nginx企业中应用的更多一些,因此今天也会详细阐述Nginx的优化,有人说,服务器不需要优化,开虚拟化,分分钟成倍 ...
- 企业级web nginx服务优化
1.1)隐藏nginx header 内版本号信息 [root@aliyun ~]# vi /application/nginx/conf/nginx.conf http{ …… server_tok ...
- Keepalivaed +Nginx proxy 高可用架构方案与实施过程细节
1.开源产品介绍 1)CMS介绍 官方网站http://www.dedecms.com/,是一个网站应用系统构建平台,也是一个强大的网站内容管理系统,既可以用来构建复杂的体系的企业信息门户或者电子商务 ...
- nginx proxy大文件上传失败问题总结
问题描述: http://www.syhuo.net ota.apk包上传正常 http://www.syhuo.net:8080 ota.apk包上传不正常 查看nginx error日志 [roo ...
- nginx + SSL优化配置
nginx + SSL优化配置: #http段添加如下配置项: http { ssl_prefer_server_ciphers on; #设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户 ...
- nginx proxy超时报错 upstream timed out (110: Connec...
环境介绍 服务器:centos6.4服务:nginx proxy 问题描述: 然后查找 /opt/usr/nginx/1.4.0/logs 错误 error.log日志提示如下 2015/01/0 ...
- nginx 配置优化的几个参数
nginx 配置优化的几个参数 2011-04-22 本文地址: http://blog.phpbean.com/a.cn/7/ --水平有限欢迎指正-- -- 最近在服务器上搞了一些nginx 研究 ...
- 【实战分享】又拍云 OpenResty / Nginx 服务优化实践
2018 年 11 月 17 日,由 OpenResty 主办的 OpenResty Con 2018 在杭州举行.本次 OpenResty Con 的主题涉及 OpenResty 的新开源特性.业界 ...
随机推荐
- 求指定范围里的不重复的N个随机数
原本是朋友问了一个题目,怎样把1到25个整形数随机排列,想了想,换个意思就是说如何把25个数随机不重复显示出来,即求1—25中25个随机数的一个数组.最简单的方法即利用双循环,是在每次得到一个随机数后 ...
- "ApplicationDbContext"(泛指之类的数据库上下文模型)上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库。
一,在我使用自动生成数据库的时候,当你改变了数据库就会出现下面问题 "ApplicationDbContext"(泛指之类的数据库上下文模型)上下文的模型已在数据库创建后发生更改. ...
- 《JS权威指南学习总结--第九章 类和模板》
内容要点: 一. 1.第六章详细介绍了JS对象,每个JS对象都是一个属性集合,相互之间没有任何联系.在JS中也可以定义对象的类,让每个对象都共享某些属性,这种"共享"的特性是非常有 ...
- Sun jdk, Openjdk, Icedtea jdk关系
转自: http://blog.chinaunix.net/uid-20648944-id-3204527.html Sun jdk与Openjdk版本发展历史如下图所示: 1. Openjdk ...
- ElasticSearch(2)-文档
上一篇 ES(1) 官网原地址:https://www.elastic.co/guide/en/elasticsearch/reference/1.7/_cluster_health.html ES权 ...
- CentOS系统使用配置文件修改IP地址详细教程
在VM虚拟机安装的centos系统,默认使用的是dhcp自动获取ip地址的方式,而我自己想用这个centos在局域网内搭建一个小型演示站点,这个自动获取ip地址的方式就明显不好了,那么centos如何 ...
- 高精度运算专题2-减法运算(The subtraction operation)
这个专题呢,我就来讲讲高精度的减法,下面是三个计算减法的函数,第一个函数是char类型的,要对字符串进行数字转换,而第二个是两个int类型的数组,不用转换成数字,第三个则更为优化,用a数组-b数组放回 ...
- Core Animation之多种动画效果
前面介绍了Core Animation基础知识,还有CALayer的简单使用,最终还是有要动画的滴,这里列出几个动画效果,参考下能加深对Core Animation的认识和理解 1.把图片移到右下角变 ...
- java的string.split()分割特殊字符时注意点
[1]单个符号作为分隔符 String address="上海|上海市|闵行区|吴中路"; String[] splitAddress=address.s ...
- A - 小Y上学记——修学分
A - 小Y上学记——修学分 Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) S ...