标准化: Nginx: 一:系统优化 1,内核优化: vi /etc/sysctl.conf 添加 net.ipv4.ip_local_port_range = 1024 65535 vm.swappiness = 0 最大程度使用物理内存 swappiness=100的时候表示积极的使用swap分区 net.core.somaxconn = 65535 经常在它们的配置文件中有设置队列大小的选项。大的侦听队列对防止拒绝服务 DoS 攻击也会有所帮助 net.ipv4.tcp_max_syn_backlog = 65535还未得到客户端确认的链接请求﹐须要保存在队列中最大数目 net.ipv4.tcp_fin_timeout = 30 超时时间 net.ipv4.tcp_tw_reuse = 1 1表示开启重用。容许将TIME-WAIT sockets从新用于新的TCP链接,默认为0 net.ipv4.tcp_retries2 = 5 TCP失败重传次数,默认值5,意味着重传5次才完全放弃.可减小到5,以尽早释放内核资源. net.ipv4.tcp_syn_retries = 2 net.ipv4.tcp_keepalive_time = 1800 表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是3小时,改成20分钟 net.ipv4.tcp_keepalive_intvl = 30 net.ipv4.tcp_keepalive_probes = 5 net.core.netdev_max_backlog = 8192 2,文件优化: 修改ulimit 1.vi /etc/security/limits.conf * soft nproc 65535 * hard nproc 65535 * soft nofile 65535 * hard nofile 65535 * soft stack unlimited 3,nginx安装: Nginx安装分为yum安装以及源码安装 源码安装这些必须加上, ./configure --user=nginx --group=nginx --prefix=/opt/nginx --with-pcre=/root/pcre-8.37 --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module Make Make install 若是作健康检查安装nginx_upstream_check_module,模块 wget https://codeload.github.com/yaoweibin/nginx_upstream_check_module/zip/master unzip master tar -zxvf nginx-1.8.0.tar.gz cd nginx-1.8.0 patch -p1 < ../nginx_upstream_check_module-master/check_1.7.5+.patch 编译时候须要加上--add-module=nginx_upstream_check_module-master/ 4,nginx配置文件 nginx配置文件参数调整 user nginx; worker_processes 2; 通常一个进程足够了,你能够把链接数设得很大。 若是有SSL、gzip这些比较消耗CPU的工做,并且是多核CPU的话,能够设为和CPU的数量同样。 或者要处理不少不少的小文件,并且文件总大小比内存大不少的时候,也能够把进程数增长, 以充分利用IO带宽(主要彷佛是IO操做有block)。 pid logs/nginx.pid; worker_rlimit_nofile 65535; 更改worker进程的最大打开文件数限制 events { use epoll; 支持一个进程打开大数目的socket描述符 IO效率不随FD数目增长而线性降低 worker_connections 65535; 若是nginx 中worker_connections 值设置是1024,worker_processes 值设置是4,按反向代理模式下最大链接数的理论计算公式: 最大链接数 = worker_processes * worker_connections/4 查看相关资料,生产环境中worker_connections 建议值最好超过9000,计划将一台nginx 设置为10240,再观察一段时间。 } sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 60; #开启压缩 gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.0; gzip_comp_level 2; gzip_types text/plain application/x-javascript text/css application/xml; gzip_vary on; proxy_buffer_size 16k; proxy_buffers 4 64k; proxy_busy_buffers_size 128k; proxy_temp_file_write_size 128k; 日志格式 log_format json '{"@timestamp":"$time_iso8601",' '"@version":"1",' '"host":"$server_addr",' '"client":"$remote_addr",' '"upAddr":"$upstream_addr",' '"size":$body_bytes_sent,' '"responsetime":$request_time,' '"domain":"$host",' '"url":"$uri",' '"status":"$status"}'; access_log /var/log/nginx/access.log json; 作代理: location / { proxy_pass http://*.*.*; #代理 proxy_set_header Host $host; # Host” header设置为$host变量,其中包含了原始的请求主机信息。 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #后端获取真实ip proxy_set_header X-Forwarded-Proto $scheme; # X-Forwarded-Proto header为代理服务器提供了原始请求的schema信息(http或https请求)。 proxy_cookie_path / /; proxy_set_header Cookie $http_cookie; #设置cookie } 红色标记必须带上。