Nginx 作为反向Proxy 的优化要点

原文地址:http://my.oschina.net/hyperichq/blog/405421

 

常用优化要点

当nginx用于反向代理时,每个客户端将使用两个连接:

一个用于响应客户端的请求,另一个用于到后端的访问;

如果机器是两核CPU,例如:

?


1

2

grep ^proces /proc/cpuinfo wc -l

2

那么,可以从如下配置起步:

?


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-Core

worker_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 指标可以看到。

参考资源:

http://tweaked.io/guide/nginx-proxying/

网络管理软件hyperic hq监控和管理Nginx

Hyperic 监控 Nginx1.6 配置过程

下载免费开源Hyperic

时间: 2024-09-14 09:40:10

Nginx 作为反向Proxy 的优化要点的相关文章

Nginx 作为 web 服务器的优化要点

常用优化要点 nginx使用的是固定数量的workers, 每个worker都处理进入的请求.最佳实践是每个CPU内核配置一个worker. 如何知道您的系统有几个CPU?`javascript$ grep ^processor /proc/cpuinfo | wc -l 对于一个四核处理器,配置文件类似: One worker per CPU-core. worker_processes 4;events { worker_connections 8096; multi_accept on;

Nginx 作为反向代理优化要点proxy_buffering

当nginx用于反向代理时,每个客户端将使用两个连接:一个用于响应客户端的请求,另一个用于到后端的访问: 那么,可以从如下配置起步: 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; } wo

linux中使用Nginx搭建反向代理服务器

一.反向代理:Web服务器的"经纪人" 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器. 从上图可以看出:反向代理服务器位于网站机房,代理网站Web服务器接收Http请求,对请求进行转发. 1.2 反向代理的作用 ①保护网站安全:任何来自Internet的请求都必须先经过代理服务

【NodeJs】Linux安装NodeJs并配合Nginx实现反向代理

Linux安装NodeJs并配合Nginx实现反向代理 NodeJs 是什么 Node.js是一个Javascript运行环境(runtime).实际上它是对Google V8引擎进行了封装.V8引 擎执行Javascript的速度非常快,性能非常好. Node.js对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好. 本地安装(OS X) 版本选择 V4.4.4,长期支持版本,成熟可靠 V6.2.0 稳定版本,最新特性 这里我还是倾向于使用最新的版本~ 下载安装包

Linux安装NodeJs并配合Nginx实现反向代理_Linux

本文介绍了Linux安装NodeJs并配合Nginx实现反向代理 ,具体如下: NodeJs是什么? Node.js是一个JavaScript运行环境(runtime).实际上它是对Google V8引擎进行了封装.V8引 擎执行Javascript的速度非常快,性能非常好. Node.js对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好. 本地安装(OS X) 版本选择 V4.4.4,长期支持版本,成熟可靠 V6.2.0 稳定版本,最新特性 这里我还是倾向于使用

购物分享网站优化要点

图片一直是作为网络传播信息的一种重要媒介.因为其直观性和美观性非常受众多的网站和网民青睐.特别对于产品的宣传,是文字远远无法比拟的.之前受制与网络带宽,大多数网站都不会在网上放置过多的图片,都是采用图片加文字说明.但随着网速的提升.随着美丽说.蘑菇街一类的购物分享网站的崛起,购物分享网站也迎来了新的热潮.众多站长也加入到其中来,瀑布流的网站类型大受欢迎. 但是由于以图片为主的网站,搜索引擎并无法很好地识别图片;加之众多的购物分享网站的内容资源,都来自于淘宝等购物网站的资源,重复性非常大.所以对于

如何在阿里云上部署Nginx实现反向代理?

如何在阿里云上部署Nginx实现反向代理? 云中沙箱实验"在阿里云上部署Nginx实现反向代理",教您如何在阿里云上部署Nginx实现反向代理? 云中沙箱,阿里云官方实验平台.网址:http://lab.aliyunedu.net   一.基本概念 业务背景     在很多情况下,可能只有一个公网IP地址,但是内部有多个服务需要映射出去,如:www.domain.com,oa.domain.com,并且,相关的服务不在同一台服务器上面的时候,那直接做端口映射就无法达到要求了.这时设置反

详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南_nginx

Nginx是一种服务器软件,也是一种高性能的http和反向代理服务器,同时还是一个代理邮件服务器.也就是说,我们在Nginx上可以发布网站,可以实现负载均衡(提高应答效率,避免服务器崩溃),还可以作为邮件服务器实现收发邮件等功能.而最常见的就是使用Nginx实现负载均衡. Nginx与其他服务器的性能比较: Tomcat服务器面向Java语言,是重量级的服务器,而Nginx是轻量级的服务器.Apache服务器稳定.开源.跨平台,但是Apache服务器不支持高并发,Nginx能支持处理百万级的TC

详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点_nginx

上一篇分享了 Nginx + Tomcat 反向代理 负载均衡 集群 部署指南,感觉还是相当实用型的,但是一般集群部署是基于大访问量的,可能有的企业用不到,类似一些企业官网,访问量并不是很大,基于这个新需求,今天专门为大家分享一下 Nginx + Tomcat 反向代理 如何在一台服务器部署多个站点,节省服务器开支,就在这篇文章了. 首先我们需要安装好Nginx.jdk.Tomcat,安装方法已经在 上一篇 说过了,本篇不再赘述. 下来看一下我们的需求,我这里有三个网站项目工程需要部署(依次对应