3-16 lnmp 调优

 查看版本号

修改配置文件的版本号

1 )[root@xuegod1 nginx-1.8.1]# vim src/core/nginx.h

2 )

3 ) vim src/http/ngx_http_header_filter_module.c 


   新半杯不用修改這裡否則出錯

4 )[root@xuegod1 nginx-1.8.1]# vim src/http/ngx_http_special_response.c

  16.1.2   Nginx  正式安装

 1 ) 安装依赖    yum  install gcc gcc-c++  autoconf  automake zlib   zlib-devel    openssl openssl-devel  pcre pcre-devel     -y 

预编译 

2 )./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-pcre

3 )  make -j 4 && make install

[root@xuegod1 nginx-1.8.1]# echo $?

0

4 ) [root@xuegod1 local]# cd nginx/

[root@xuegod1 nginx]# ls

conf  html  logs  sbin

[root@xuegod1 nginx]# ./sbin/nginx     启动nginx 

[root@xuegod1 nginx]# lsof -i:80

COMMAND  PID  USER  FD  TYPE DEVICE SIZE/OFF NODE NAME

nginx  14167  root    6u  IPv4  80803      0t0  TCP *:http (LISTEN)

nginx  14168 nobody    6u  IPv4  80803      0t0  TCP *:http (LISTEN)



修改运行用户 

[root@xuegod1 nginx]# useradd -M -s /sbin/nologin nginx

[root@xuegod1 nginx]# id nginx

uid=1001(nginx) gid=1001(nginx) 组=1001(nginx)


[root@xuegod1 nginx]# vim conf/nginx.conf

重启查看



[root@xuegod1 nginx]# vim conf/nginx.conf

再次重启

[root@xuegod1 nginx]# ./sbin/nginx -s reload

[root@xuegod1 nginx]# lsof -i:80   已经看到有四个  nginx  运行了

COMMAND  PID  USER  FD  TYPE DEVICE SIZE/OFF NODE NAME

nginx  14167  root    6u  IPv4  80803      0t0  TCP *:http (LISTEN)

nginx  14450 nginx    6u  IPv4  80803      0t0  TCP *:http (LISTEN)

nginx  14451 nginx    6u  IPv4  80803      0t0  TCP *:http (LISTEN)

nginx  14452 nginx    6u  IPv4  80803      0t0  TCP *:http (LISTEN)

nginx  14453 nginx    6u  IPv4  80803      0t0  TCP *:http (LISTEN)

16.1.3  Nginx  运行CPU亲和力 



Nginx   最多可以打开文件数





查看内存

[root@xuegod1 nginx]# cat /proc/sys/fs/file-max

196609

16.1.4  单个进程允许客户端最大并发连接数


top  -u  nginx  

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

14450 nginx    20  0  27352  1548    644 S  0.0  0.1  0:00.19 nginx                                                               

14451 nginx    20  0  27352  1540    644 S  0.0  0.1  0:00.19 nginx                                                               

14452 nginx    20  0  27352  1540    644 S  0.0  0.1  0:00.19 nginx                                                               

14453 nginx    20  0  27352  1516    644 S  0.0  0.1  0:00.00 nginx

1.5M  左右

[root@xuegod1 nginx]# vim conf/mime.types




在配置文件中添加

自定义连接时间

29 sendfile on;

30    #tcp_nopush    on;

31

32    #keepalive_timeout  0;

33    keepalive_timeout  65;

34    tcp_nodelay on;

35    client_header_timeout 15;

36    client_body_timeout 15;

37    send_timeout 15;


限制文件大小   上传文件大小

在40行左右

16.2.1  Fastigi   调优 

Nginx  没有配置factcgi    。你使用nginx  是一个失败的方法

Nginx没有配置factcgi,你使用nginx是一个失败的方法

配置之前。了解几个概念:

Cache:写入缓存区

Buffer:读取缓存区

Fastcgi是静态服务和动态服务的一个接口

fastcgi_connect_timeout 300;    #指定链接到后端FastCGI的超时时间。

fastcgi_send_timeout 300;       #向FastCGI传送请求的超时时间,这个值是指已经完成两次握手后向FastCGI传送请求的超时时间。

fastcgi_read_timeout 300;       #指定接收FastCGI应答的超时时间,这个值是指已经完成两次握手后接收FastCGI应答的超时时间。

fastcgi_buffer_size 64k;        #指定读取FastCGI应答第一部分需要用多大的缓冲区,这个值表示将使用1个64KB的缓冲区读取应答的第一部分(应答头),可以设置为fastcgi_buffers选项指定的缓冲区大小。

fastcgi_buffers 4 64k;  #指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答请求,如果一个php脚本所产生的页面大小为256KB,那么会分配4个64KB的缓冲区来缓存,如果页面大小大于256KB,那么大于256KB的部分会缓存到fastcgi_temp指定的路径中,但是这并不是好方法,因为内存中的数据处理速度要快于磁盘。一般这个值应该为站点中php脚本所产生的页面大小的中间值,如果站点大部分脚本所产生的页面大小为256KB,那么可以把这个值设置为“8 16K”、“4 64k”等。

fastcgi_busy_buffers_size 128k; #建议设置为fastcgi_buffer的两倍,繁忙时候的buffer

fastcgi_temp_file_write_size 128k;  #在写入fastcgi_temp_path时将用多大的数据库,默认值是fastcgi_buffers的两倍,设置上述数值设置小时若负载上来时可能报502Bad Gateway

fastcgi_cache gnix; #表示开启FastCGI缓存并为其指定一个名称。开启缓存非常有用,可以有效降低CPU的负载,并且防止502的错误生,但是开启缓存也可能会引起其他问题,要很据具体情况选择

fastcgi_cache_valid 200 302 1h; #用来指定应答代码的缓存时间,实例中的值表示将200和302应答缓存一小时,要和fastcgi_cache配合使用

fastcgi_cache_valid 301 1d;     #将301应答缓存一天

fastcgi_cache_valid any 1m;     #将其他应答缓存为1分钟

fastcgi_cache_min_uses 1;       #请求的数量

fastcgi_cache_path              #定义缓存的路径

配置文件中

fastcgi_connect_timeout 300;

fastcgi_send_timeout 300;

fastcgi_read_timeout 300;

fastcgi_buffer_size 64k;

fastcgi_buffers 4 64k;

fastcgi_busy_buffers_size 128k;

fastcgi_temp_file_write_size 128k;

#fastcgi_temp_path /data/ngx_fcgi_tmp;

fastcgi_cache_path /data/ngx_fcgi_cache   levels=2:2   #缓存路径,levels目录层次2级

keys_zone=ngx_fcgi_cache:512m  #定义了一个存储区域名字,缓存大小

inactive=1d max_size=40g;      #不活动的数据在缓存中多长时间,目录总大小

再次重启

 # ./sbin/nginx -s reload

在location   添加

  location ~ .*\.(php|php5)?$

{

 fastcgi_pass 127.0.0.1:9000;

      fastcgi_index index.php;

      include fastcgi.conf;

      fastcgi_cache ngx_fcgi_cache;

      fastcgi_cache_valid 200 302 1h;

      fastcgi_cache_valid 301 1d;

      fastcgi_cache_valid any 1m;

      fastcgi_cache_min_uses 1;

      fastcgi_cache_use_stale error timeout invalid_header http_500;

      fastcgi_cache_key http://$host$request_uri;

官方文档

http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache


在server  字段里面 

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

      {

      expires      3650d;

      }

location ~ .*\.(js|css)?$

      {

      expires      30d;

      }

 

同时也可以对目录及其进行判断:

location ~ ^/(images|javascript|js|css|flash|media|static)/ {

      expires 360d;

      }

location ~(robots.txt) {

      expires 7d;

      break;

      }

expire功能优点

(1)expires可以降低网站购买的带宽,节约成本

(2)同时提升用户访问体验

(3)减轻服务的压力,节约服务器成本,甚至可以节约人力成本,是web服务非常重要的功能。

expire功能缺点:

被缓存的页面或数据更新了,用户看到的可能还是旧的内容,反而影响用户体验。

解决办法:

第一个缩短缓存时间,例如:1天,不彻底,除非更新频率大于1天

第二个对缓存的对象改名

a.图片,附件一般不会被用户修改,如果用户修改了,实际上也是更改文件名重新传了而已

b.网站升级对于js,css元素,一般可以改名,把css,js,推送到CDN。

网站不希望被缓存的内容

1)广告图片

2)网站流量统计工具

3)更新频繁的文件(google的logo)

  nginx  的日志

  做日志切割 

16.5.1  日志切割优化

[root@xuegod63 ~]# cd /usr/local/nginx/logs/

日志优化的目的,是为了一天日志一压缩,按天存放,超过10天的删除

[root@xuegod63 logs]# vim cut_nginx_log.sh //每天日志分割脚本

(tar  tvf 2017-011-08.tar.bz2 显示文件内容)

#!/bin/bash

date=$(date +%F -d -1day)

cd /usr/local/nginx/logs

if [ ! -d cut ] ; then

        mkdir cut

fi

mv access.log cut/access_$(date +%F -d -1day).log

mv error.log cut/error_$(date +%F -d -1day).log

/usr/local/nginx/sbin/nginx -s reload

tar -jcvf cut/$date.tar.bz2 cut/*

rm -rf cut/access* && rm -rf cut/error*

cat >>/var/spool/cron/root<

00 00 * * * /bin/sh /usr/local/nginx/logs/cut_nginx_log.sh >/dev/null 2>&1

eof

find -type f -mtime +10 | xargs rm -rf

创建目录

[root@xuegod1 nginx]# mkdir /xuegod/logs -pv

mkdir: 已创建目录 "/xuegod"

mkdir: 已创建目录 "/xuegod/logs"

[root@xuegod1 nginx]#  chown -R  root.root  /xuegod/logs/ 

修稿权限


禁止访问images  下的php   文件

location ~ ^/images/.*\.(php|php5|.sh|.py|.pl)$ {

            deny all;

        }

创建PHP  文件

[root@xuegod1 nginx]# mkdir /usr/local/nginx/html/images

[root@xuegod1 nginx]#  echo "" > /usr/local/nginx/html/images/index.php

开始测试访问

防治DDOS 工具 

[root@xuegod1 nginx]# yum install httpd-tools -y

[root@xuegod1 nginx]# ab -c 200 -t 1 http://192.168.24.68/index.html

你可能感兴趣的:(3-16 lnmp 调优)