查看版本号
修改配置文件的版本号
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