nginx配置优化

 
 

#定义Nginx运行的用户和用户组user  www  www;  

#启动工作进程,通常设置成和cpu的数量相等
worker_processes  8;   最多开启8个,8个以上性能就不会再提升了。

#为每个工作进程分配cpu。
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

关于cpu的设置,可以查看这个链接:http://blog.csdn.net/u011957758/article/details/50959823

#该指令是当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,
#但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。
worker_rlimit_nofile  102400;

#全局错误日志及PID文件
error_log  /usr/local/nginx/logs/error.log; 
#错误日志定义等级,[ debug | info | notice | warn | error | crit ]加在后面即可。

#定义pid文件
pid        /usr/local/nginx/nginx.pid;

events {
use   epoll;                
#epoll是多路复用IO(I/O Multiplexing)中的一种方式,可以大大提高nginx的性能。
worker_connections  10240;    
#单个后台worker process进程的最大并发链接数 (最大连接数=连接数*进程数)
multi_accept  on; 
#尽可能多的接受请求.
}
#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
#设定mime类型,类型由mime.type文件定义
include       mime.types;
#定义默认的MIME类型;default_type  application/octet-stream;
#定义日志格式
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$request_time"';

$request_time的单位是秒。

实战:

103.233.128.154 - - [10/Nov/2017:11:03:05 +0800] "GET /data/questionnaire?callback=jQuery111105610104849438594_1510282984659&pid=cnu&u=b&mode=c&_id=5a0516c71b0aebcecc985469&_=1510282984660 HTTP/1.1" 200 187 "http://csproduct.cmr.net.cn/nwb/webdata/pxbz/m/dcwjwt?pid=cnu&productId=028&paperid=5a0516c71b0aebcecc985469&firstBlockId=59bb8ca238d2116827ea9cdb&firstIndex=2&blockId=5a0516c7e7c4e1b8a0058ad2&secIndex=11&status=1" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0"  "0.014"

103.233.128.154   $remote_addr   远程客户端地址

-        -

-   $remote_user          远程客户端用户名称

[10/Nov/2017:11:03:05 +0800]     [$time_local]    访问时间和时区

GET /data/questionnaire?callback=jQuery111105610104849438594_1510282984659&pid=cnu&u=b&mode=c&_id=5a0516c71b0aebcecc985469&_=1510282984660 HTTP/1.1     $request    请求信息

200    $status    状态码

187    $body_bytes_sent   字节为单位    发送字节大小

http://csproduct.cmr.net.cn/nwb/webdata/pxbz/m/dcwjwt?pid=cnu&productId=028&paperid=5a0516c71b0aebcecc985469&firstBlockId=59bb8ca238d2116827ea9cdb&firstIndex=2&blockId=5a0516c7e7c4e1b8a0058ad2&secIndex=11&status=1 $http_referer          从哪个页面访问过来的,可以防盗链在这里设置

Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0      $http_user_agent   用户所使用的浏览器信息.

$request_time   请求时间单位为秒

$http_x_fordwarded_for   此nginx当做web的时候,当前端有代理服务器时,记录客户端的地址,前提是代理服务器上设置了proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for

#设定访问日志路径
access_log    /usr/local/nginx/log/nginx/access.log;
sendfile      on;
#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用必须设为on
#如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的uptime。
#autoindex  on;  
#开启目录列表访问,适合下载服务器,默认关闭。
tcp_nopush on;   
#防止网络阻塞,只有在sendfile被使用时才会激活。
keepalive_timeout  120;
#keepalive超时时间,客户端到服务器端的连接持续有效时间,当出现对服务器的后继请求时,
#keepalive-timeout功能可避免建立或重新建立连接。(节省服务器资源、CPU、内存、网卡)
tcp_nodelay   on; 
#提高数据的实时响应性,仅在将连接转变为长连接的时候才被启用(在upstream发送响应到客户端时也会启用)
#开启gzip压缩
gzip on;
#设置允许压缩的页面最小字节数。
gzip_min_length  1k;
#设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。 
#4 16k代表以16k为单位,按照原始数据大小以16k为单位的4倍申请内存。
gzip_buffers     4 16k;
#设置支持http协议的最小压缩版本。现在大多浏览器都支持。
gzip_http_version 1.1;
#压缩级别大小,最大为9,值越小,压缩后比例越小,CPU处理更快。
#值越大,消耗CPU比较高。
gzip_comp_level  6; 
#支持压缩的类型。
gzip_types       text/plain application/x-javascript text/css application/xml;
#在http头文件中加个“Vary: Accept-Encoding”,给代理服务器用的,有的浏览器支持压缩,有的不支持
#所以避免浪费不支持的也压缩,所以根据客户端的HTTP头来判断,是否需要压缩
gzip_vary on;
#对IE6进行压缩,不过IE6目前已经淘汰。
#gzip_disable "MSIE [1-6]."
client_max_body_size 10m;      
#允许客户端请求的最大单文件字节数
client_body_buffer_size 128k; 
#缓冲区代理缓冲用户端请求的最大字节数.
proxy_connect_timeout 90;      
#nginx跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 90;         
#后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 90;         
#连接成功后,后端服务器响应时间(代理接收超时)
proxy_buffer_size 4k;          
#设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k;           
#proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
proxy_busy_buffers_size 64k;   
#高负荷下缓冲大小(proxy_buffers*2)
large_client_header_buffers  4 4k;
#设置读取客户端请求超大请求的缓冲最大number(数量)和每块缓冲的size(容量)。 
#HTTP请求行的长度不能超过一块缓冲的容量,否则nginx返回错误414 (Request-URI Too Large)到客户端。 
#每个请求头的长度也不能超过一块缓冲的容量,否则nginx返回错误400 (Bad Request)到客户端。
client_header_buffer_size 4k;
#客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求的头部大小不会超过1k
#不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE取得。
open_file_cache max=102400 inactive=20s;
#这个将为打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存。
open_file_cache_valid 30s;
#这个是指多长时间检查一次缓存的有效信息。open_file_cache_min_uses 1;
#open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive
#包含其它配置文件,如自定义的虚拟主机
include vhosts.conf;

虚拟主机配置文件的优化

  upstream backend {        
        #配置后端服务器的权重。如果在30秒内请求失败两次自动剔除
        server   127.0.0.1:8080 weight=1 max_fails=2 fail_timeout=30s;
        server   127.0.0.1:8081 weight=1 max_fails=2 fail_timeout=30s;
        server   127.0.0.1:8082 weight=1 max_fails=2 fail_timeout=30s;
        server   127.0.0.1:8083 weight=1 max_fails=2 fail_timeout=30s;
    }   
    #虚拟主机配置
    server {       #侦听80端口
        listen       80;        #定义使用www.abc.com访问
        server_name  www.abc.com;        #设定本虚拟主机的访问日志
        access_log  logs/access.log  main;
            root   /data/webapps/www;  #定义服务器的默认网站根目录位置
        index index.php index.html index.htm;   #定义首页索引文件的名称
        #默认请求
        location ~ /{
          root   /data/webapps/www;      #定义服务器的默认网站根目录位置
          index index.php index.html index.htm;   #定义首页索引文件的名称

#以下是一些反向代理的配置.
          proxy_next_upstream http_502 http_504 error timeout invalid_header;         
      #如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。
          proxy_redirect off;        
           #允许重新定义或者添加发往后端服务器的请求头
          proxy_set_header Host $host;          
          #把真实客户端IP写入到请求头X-Real-IP,在NginxBackend输出$http_x_real_ip获取到了真实客户端IP
          #而Nginx Backend的“$remote_addr”输出为最后一个反向代理的IP;
          proxy_set_header X-Real-IP $remote_addr;          
          #把请求头中的X-Forwarded-For与$remote_addr用逗号合起来,
          #如果请求头中没有X-Forwarded-For则$proxy_add_x_forwarded_for为$remote_addr。
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;          
          #设置代理使用的HTTP协议版本。默认使用的版本是1.0
          proxy_http_version 1.1;
          proxy_set_header Connection "";         
           #设置允许客户端请求正文的最大长度。
          client_max_body_size    100m;          
          #请求转向后端定义的均衡模块,和前面的指定对应。
           proxy_pass  http://backend;   
        # 定义错误提示页面
            error_page   500 502 503 504 /50x.html;  
            location = /50x.html {
            root   html;
        }       #配置Nginx动静分离,定义的静态页面直接从Nginx发布目录读取。
        location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
        {
            root /data/webapps/www;            
            #expires定义用户浏览器缓存的时间为3天,如果静态页面不常更新,可以设置更长,这样可以节省带宽和缓解服务器的压力,在浏览器保存该类型文件的天数。
            expires      3d;
        }       
        #PHP脚本请求全部转发到 FastCGI处理. 使用FastCGI默认配置.
        location ~ \.php$ {
            root /root;
            FastCGI_pass 127.0.0.1:9000;
            FastCGI_index index.php;
            FastCGI_param SCRIPT_FILENAME /data/webapps/www$FastCGI_script_name;
            include FastCGI_params;
        }        
        #设定查看Nginx状态的地址
        location /NginxStatus {
            stub_status  on;
        }
     }
}

主要涉及开启的线程数量,绑定CPU,启动压缩,如果有代理还涉及到后后端服务器的交互时间等优化

nginx配置文件优化的更多相关文章

  1. (转)[Nginx] – 配置文件优化 [一 ,二]

    [Nginx] – 安全优化 – 配置文件优化 [二] 原文:https://www.abcdocker.com/abcdocker/586 [Nginx] – 性能优化 – 配置文件优化 [一] 原 ...

  2. NGINX配置文件优化示例

    Nginx主配置文件 upstream.conf配置文件 # server nginx配置文件最好分开写,不要把所有的逻辑都放在一个文件里面,会看着很麻烦,,之前我的配置文件都放一起了,,导致现在维护 ...

  3. [NGINX] - 配置文件优化 - NGINX.CONF

    Nginx 本文主要针对公司的Nginx负载均衡配置进行解释,配置文件在最下方.因为公司没有使用PHP,所以NGINX里面并没有太多facgi模块相关优化    NGINX.CONF user   语 ...

  4. Nginx 配置文件优化

    user www www; #用户&组 worker_processes auto; #通常是CPU核的数量存储数据的硬盘数量及负载模式,不确定时将其设置为可用的CPU内核数(设置为“auto ...

  5. Nginx高性能优化

    #Nginx配置文件优化 worker_processes ; # nginx进程数,建议按照cpu数目来指定,一般为它的倍数. worker_cpu_affinity ; # 为每个进程分配CPU的 ...

  6. [Nginx] – 性能优化 – 配置文件优化

    Nginx基本安全优化 1.调整参数隐藏Nginx版本号信息     一般来说,软件的漏洞都和版本有关,因此我们应尽量隐藏或清除Web服务队访问的用户显示各类敏感信息(例如:Web软件名称及版本号等信 ...

  7. nginx配置文件企业优化

    1.1 企业规范优化Nginx配置文件 第一个里程碑:创建扩展目录,生成虚拟主机配置文件 mkdir extra sed -n '10,15p' nginx.conf >extra/www.co ...

  8. Nginx配置文件、优化详解

    上篇<编译安装nginx>已将nginx安装好,这篇写nginx配置文件和部分优化参数. 查看nginx的配置文件路径,可以使用nginx配置文件检查命令nginx -t: [root@n ...

  9. nginx的优化

    Nginx 优化 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为"engine X",是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/P ...

随机推荐

  1. linux:基本指令ls、cd

    cd 指令  使用 cd 指令, 我们能在 Terminal 中轻松切换到不同的文件夹. 想从 Home 去 Documents 这个文件夹? 输入下面的命令就可以了. ~$ cd Documents ...

  2. delphi inttohex 整型到十六进制

    inttohex from delphi help: Returns the hex representation of an integer. Unit SysUtils Category nume ...

  3. 转:jquery的$(function(){})和$(document).ready(function(){}) 的区别

    原文链接:https://www.cnblogs.com/slyzly/articles/7809935.html [转载]jquery的$(function(){})和$(document).rea ...

  4. OLTP/OLAP

    原文地址:https://www.cnblogs.com/hhandbibi/p/7118740.html 数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction p ...

  5. 自动化测试:java + testng + maven + reportng + jenkins + selenium (一)_基于win环境

    集成环境:jdk1.7 + tomcat1.7+ eclipse mars + maven + testng6.14.2 + selenium-java2.40.0 + reportng1.1.4 + ...

  6. ubuntu64位系统编译时头文件找不到的问题(可以查看g++ -v路径,设置export C_INCLUDE_PATH,CPLUS_INCLUDE_PATH)

    今天编译webrtc时出现以下错误: ninja -C out/Debug Allninja: Entering directory `out/Debug'[1/6] CXX obj/talk/app ...

  7. Vue的双向数据绑定原理是什么?

    vue.js是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调. ...

  8. 报错解决——linux下执行sh出现异常"syntax error: unexpected end of file"

    有时我们在linux下执行一个sh文件,会报错“SYNTAX ERROR:UNEXPECTED END OF FILE”,这个现象主要是工作的系统环境改变造成的. 若最初脚本中是在windows下,使 ...

  9. Redis入门到高可用(九)——有序集合zset

    一.数据结构 集合与有序集合,列表与有序集合的对比 二.主要API zadd 将一个或多个 member 元素及其 score 值加入到有序集 key 当中. zrem 移除有序集 key 中的一个或 ...

  10. ArcGIS工具备忘

    1.Repair Geometry (Data Management) 几何图形修复,比如面图层不满足节点坐标逆时针 2.Raster Domain (3D Analyst) 获取栅格范围 3.Int ...