美文网首页
Nginx 性能参数优化

Nginx 性能参数优化

作者: 王哲理 | 来源:发表于2017-09-18 10:07 被阅读20次

    user www www;

    # ginx要开启的进程数 一般等于cpu的总核数,没必要开那么多,1个nginx内存消耗10兆左右

    worker_processes4;

    # 为每个进程分配cpu,上例中将4 个进程分配到4个cpu,当然可以写多个,或者将一 个进程分配到多个cpu。

    worker_cpu_affinity00000001000000100000010000001000;

    # 每个nginx进程打开文件描述符最大数目 配置要和系统的单进程打开文件数一

    # 致,linux 2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应,应该填写65535

    # nginx调度时分配请求到进程并不是那么的均衡,假如超过会返回502错误。我这里写的大一点

    worker_rlimit_nofile100000;

    # 开启nginx错误日志

    error_log logs/error.log;

    # 告诉nginx只能记录严重的错误

    #error_log logs/error.log notice;

    #error_log logs/error.log info;

    #pid logs/nginx.pid;

    events{

    # 每个工作进程允许最大的同时连接数(Maxclient = work_processes * worker_connections)

    # 默认1024

    worker_connections65535;

    # 告诉nginx收到一个新连接通知后接受尽可能多的连接。

    multi_accept on;

    # 设置用于复用客户端线程的轮询方法。如果你使用Linux 2.6+,你应该使用epoll。

    # 如果你使用*BSD,你应该使用kqueue。

    # 值得注意的是如果你不知道Nginx该使用哪种轮询方法的话,它会选择一个最适合你操作系统的

    useepoll;

    }

    http{

    include mime.types;

    default_type application/octet-stream;

    log_format main'$remote_addr - $remote_user [$time_local] "$request" '

    '$status $body_bytes_sent "$http_referer" '

    '"$http_user_agent" "$http_x_forwarded_for"';

    limit_req_zone $binary_remote_addr zone=allips:10mrate=20r/s;

    #

    #access_log logs/access.log main;

    # 这个将为打开文件指定缓存,默认是没有启用的,max 指定缓存数量,建议和打开文件数一致,

    # inactive 是指经过多长时间文件没被请求后删除缓存

    open_file_cache max=204800inactive=20s;

    # open_file_cache 指令中的inactive 参数时间内文件的最少使用次数,

    # 如果超过这个数字,文件描述符一直是在缓存中打开的,

    # 如上例,如果有一个文件在inactive 时间内一次没被使用,它将被移除

    open_file_cache_min_uses1;

    # 这个是指多长时间检查一次缓存的有效信息

    open_file_cache_valid30s;

    # 并不会让nginx执行的速度更快,但它可以关闭在错误页面中的nginx版本数字,这样对于安全性是有好处的

    server_tokens off;

    # 磁盘和TCP socket之间互相拷贝数据(或任意两个文件描述符)。

    # Pre-sendfile是传送数据之前在用户空间申请数据缓冲区

    sendfile on;

    # 告诉nginx在一个数据包里发送所有头文件,而不一个接一个的发送

    #tcp_nopush on;

    # 告诉nginx不要缓存数据,而是一段一段的发送,

    # 当需要及时发送数据时,就应该给应用设置这个属性,这样发送一小块数据信息时就不能立即得到返回值。

    #tcp_nodelay on;

    upstream phpServer{

    server172.20.17.210:9000weight=1max_fails=2fail_timeout=3;

    server172.20.17.211:9000weight=1max_fails=2fail_timeout=3;

    }

    # keepalive超时时间

    keepalive_timeout65;

    client_max_body_size2m;

    # 不准许IP直接访问, 直接访问报500错误

    server{

    listen80default_server;

    server_name _;

    return500;

    }

    # 配置虚拟主机,过个server就复制多个

    server{

    listen80;

    # 开启gzip压缩

    gzip on;

    gzip_min_length1k;

    gzip_buffers416k;

    #gzip_http_version 1.0;

    gzip_comp_level2;

    gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php;

    gzip_vary off;

    gzip_disable"MSIE [1-6]\.";

    # 配置域名

    server_name www.xxxxx.com xxxxx.com;

    # 配置网站目录

    root/usr/local/nginx/html/xxxxx.com;

    # 只允许我们的域名的访问

    if($host!~^(xxxxx.com|www.xxxxx.com|images.xxxxx.com)$){

    return444;

    }

    # 配置域名重定向

    #if ($host != 'www.xxxxx.com' ) {

    # rewrite ^/(.*)$ http://www.xxxxx.com/$1 permanent;

    #}

    # 限制可用的请求方法

    if($request_method!~^(GET|HEAD|POST)$){

    return444;

    }

    # 如何拒绝一些User-Agents

    if($http_user_agent~*LWP::Simple|BBBike|wget){

    return403;

    }

    # 如何防止图片盗链

    location/images/{

    valid_referers none blocked www.xxxxx.com xxxxx.com;

    if($invalid_referer){

    return403;

    }

    }

    location/{

    # 配置rewrite

    if(!-e $request_filename){

    rewrite^(.*)$/index.php?s=$1last;

    break;

    }

    # include /usr/local/nginx/html/yphp/.htaccess;

    # rewrite ^/(.+)/(.+)[/]?$ /index.php?m=$1&a=$2 last;

    # 配置默认访问文件

    index index.php index.html index.htm;

    }

    # 包含虚拟主机公用配置文件

    include server.conf;

    }

    }

    相关文章

      网友评论

          本文标题:Nginx 性能参数优化

          本文链接:https://www.haomeiwen.com/subject/iyvvsxtx.html