• 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

  • 相关阅读:
    双心ping GUI工具1.0
    判断手机连接的是fdd还是tdd的办法
    能在CAD2004以下版本里面打开2007以上版本文件的外挂
    关闭阿里旺旺后台服务
    map 后 PE 蓝屏原因专题讨论(e820cycles参数)
    关于e820cycles参数
    在XP下把win7安装到VHD,内存足够大可以RAMOS
    抛弃优启Grub4dos和PE大多数时间可以这样用
    考拉输入法1.1-古董级小巧连打输入法
    小韦XP 和win2003装电信天翼3G无线上网卡
  • 原文地址:https://www.cnblogs.com/AloneSword/p/4458236.html
Copyright © 2020-2023  润新知