nginx header参数丢失_Nginx深入优化

Nginx深入优化

Nginx (engine x) 是一个高性能的HTTP和反向代理服务器, 轻量级、高并发的web服务器。

在实际的生产环境中,我们仍然不可能直接使用默认配置的Nginx来充当服务器。毕竟,为了更充分合理地利用Nginx服务器,我们都应该根 据自己的实际需要对nginx的默认配置作出一些必要的调整。

优化:隐藏版本号 、修改用户与组 、 网页缓存时间、 日志切割 、 连接超时 、更改进程数 、网页压缩、 防盗链 、FPM参数优化

  • 隐藏版本号
  • 隐藏版本可以减少被攻JI的风险,保护服务器安全运行。
# curl -I http://192.168.200.131/ //查看web信息 可以看到nginx版本号
0c725c2969661208af11bc0fd0d836a9.png
 # vim /usr/local/nginx/conf/nginx.conf http { include mime.types; default_type application/octet-stream; server_tokens off; //添加该行 ... } # systemctl stop nginx # systemctl start nginx //重启服务 # curl -I http://192.168.200.131/
2082ef28d7aa6fd8e6b1f1b0fa6cc5a7.png
  • 修改用户与组

Nginx运行时进程需要有用户和组的支持,用以实现对网站文件读取时进行访问控制。主进程由root创建,子进程由指定的用户与组创建,默认为nobody。

# vim /usr/local/nginx/conf/nginx.conf user nginx nginx; //修改# systemclt restart nginx# ps aux | grep nginx //查看nginx进程信息(主进程root用户,子进程nginx用户)
87afff619b1e82d96ca5c151eed2ce71.png
  • 缓存时间

当Nginx将网页数据放回给客户端后,可以设置缓存时间,以便日后进行重复请求访问,以加快访问速度、同时减轻服务器压力,一般对静态资源进行设置,对动态网页不要设置缓存时间。

# vim /usr/local/nginx/conf/nginx.conf***server里面添 :缓存为1天***location ~.(gif|jpg|jepg|png|bmp|ico)$ { root html; expires 1d; }# systemclt restart nginx
af073a1d3e7a768900fd9d4b438bd0c7.png
  • 日志切割
# vim /opt/fenge.sh //编写日志切割脚本

#!/bin/bash

#Filename:fenge.sh

d=$(date -d "-1 day" "+%Y%m%d") #显示一天前的时间

logs_path="/var/log/nginx"

pid_path="/usr/local/nginx/logs/nginx.pid"

[ -d $logs_path ] || mkdir -p $logs_path

mv /usr/local/nginx/logs/access.log ${logs_path}/test.com-access.log-$d

kill -USR1 $(cat $pid_path)

find $logs_path -mtime +30 | xargs rm -rf

# chmod +x fenge.sh# ./fenge.sh# crontab -e //设置成周期性计划任务0 1 * * * /opt/fenge.sh //每天凌晨1点执行
  • 连接超时

一般网站中,为了避免同一个客户长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现对连接访问时间的控制。

 # vim /usr/local/nginx/conf/nginx.conf http { ... keepalive_timeout 65 180; //设置超时180秒 client_header_timeout 80; client_body_timeout 80; ... }

keepalive_timeout 65 180;

第一个参数:指定了与客户端的keep-alive连接超时时间;值为0会禁用keep-alive客户端连接;

第二个参数:可选、在响应的header域中设置一个值“Keep-Alive: timeout=time”;

client_header_timeout 80;

指定等待客户端发送请求头的超时时间

client_body_timeout 80;

指定请求体读超时时间

 # systemclt restart nginx //重启服务
  • 更改进程数

在高并发环境中,需要启动更多的Nginx进程以保证快速响应,用以处理用户的请求,避免造成阻塞。

 # cat /proc/cpuinfo | grep -c "physical" //cpu核数 # vim /usr/local/nginx/conf/nginx.conf worker_processes 4; //修改为核数相同或者2倍 worker_cpu_affinity 0001 0010 0100 1000; //设置每个进程由不同cpu处理 # systemclt restart nginx //重启服务 # ps aux | grep nginx //查看进程数
  • 网页压缩

Nginx服务器将输出内容压缩后进行传输,以节约网站的带宽,提升用户的访问体验,默认已经安装了该模块。

# vim /usr/local/nginx/conf/nginx.conf gzip on; gzip_buffers 4 64k; gzip_http_version 1.1; gzip_comp_level 2; gzip_min_length 1k; gzip_vary on; gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss text/jpg text/png;# systemclt restart nginx //重启服务# curl -I -H "Accept-Encoding: gzip, deflate" 192.168.200.131/ //请求自定义的头部信息
  • fpm参数优化

Nginx的PHP解析功能实现是由FPM处理的,为了提高PHP的处理速度,可对FPM模块进行参数的调整。

1:安装带有FPM模块的PHP环境;

2:FPM进程有两种启动方式,由pm参数指定,分别是static和dynamic,前者将产生固定数据的FPM进程,后者将以动态的方式产生FPM进程;

 # vi php-fpm.conf  pid = run/php-fpm.pid pm = dynamic pm.max_children=20 pm.start_servers = 5 pm.min_spare_servers = 2 pm.max_spare_servers = 8
  • 防盗链、

在网站中,一般都要配置防盗链功能,以避免网站内容被非法盗用,造成经济损失,也避免了流量的浪费。

# vim /usr/local/nginx/conf/nginx.conf location ~*.(jpg|gif|swf)$ { valid_referers none blocked *.benet.com benet.com; if ( $invalid_referer ) { rewrite ^/ http://www.benet.com/error.png; } }//匹配jpg、gif、swf 时,返回error.png (error.png 放在站点目录)
d666fd3b12a553c0325a63c4a414e968.png
# systemclt restart nginx //重启服务

转载地址:http://blog.51cto.com/13630803/2164832

作者若此生无缘的原创作品

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值