Nginx深度优化
隐藏版本号
修改用户与组
网页缓存时间
日志切割
连接超时
更改进程数
网页压缩
防盗链
FPM参数优化
一、隐藏版本号
1.在centos7系统中通过curl命令查看
curl -I http://192.168.100.26
2.修改nginx.conf配置文件,在http{}内添加server_tokens off;语句
3.重启nginx
killall -1 nginx
4.使用curl命令查看验证
curl -I http://192.168.100.26
二、修改用户与组
Nginx运行时进程需要有用户和组的支持,用以实现对网站文件读取时进行访问控制。主进程由root创建,子进程由指定的用户与组创建,默认为nobody。
1.编译nginx时指定用户与组
./configure
--prefix=/usr/local/nginx
--user=nginx
--group=nginx
--with-http_stub_status_module
2.修改nginx配置文件指定用户与组
vim /usr/local/nginx/conf/nginx.conf
3.重启nginx
killall -1 nginx
4.查看nginx进程信息(主进程root用户,子进程nginx用户)
ps aux | grep nginx
三、网页缓存时间
当Nginx将网页数据放回给客户端后,可以设置缓存时间,以便日后进行重复请求访问,以加快访问速度、同时减轻服务器压力,一般对静态资源进行设置,对动态网页不要设置缓存时间。
1.下面对网站的图片进行指定缓存时间设置
2.修改nginx配置文件,指定缓存时间为1天
vim /usr/local/nginx/conf/nginx.conf
location ~.(gif|jpg|jepg|png|bmp|ico)$ {
root html;
expires 1d;
}
3.重启nginx
killall -1 nginx
4.Fiddler工具进行抓包验证
四、日志切割
Nginx通过nginx的信号控制功能脚本来实现日志的自动切割,并将脚本加入到Linux的计划性任务中,让脚本在每天固定的时间执行,得以实现日志切割功能。
1.编写fenge.sh脚本
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 #删除30天前的日志文件
2. 为脚本赋予执行权限
chmod +x /opt/fenge.sh
3.执行脚本,测试日志文件是否分割成功
. /fenge.sh
4.添加计划性任务
crontab -e
#每日凌晨1:00执行脚本
0 1 * /opt/fenge.sh
五、连接超时
一般网站中,为了避免同一个客户长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现对连接访问时间的控制。
1. 修改nginx.conf配置文件
vim /usr/local/nginx/conf/nginx.conf
2.重启nginx
killall -1 nginx
3.对网站进行访问,并使用Fiddler工具进行抓包验证
六、更改进程数
在高并发环境中,需要启动更多的Nginx进程以保证快速响应,用以处理用户的请求,避免造成阻塞。
1.查看ngixn运行进程的个数
cat /proc/cpuinfo | grep -c "physical"
2.修改nginx.conf配置文件
vim /usr/local/nginx/conf/nginx.conf
3.重启nginx
killall-1 nginx
4.查看nginx进程数
ps aux | grep nginx
七、网页压缩
Nginx服务器将输出内容压缩后进行传输,以节约网站的带宽,提升用户的访问体验,默认已经安装了该模块。
1.修改nginx.conf配置文件
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;
2.重启nginx
killall -1 nginx
3.创建一个大于1KB以上的网页文件,然后对其进行访问抓包
curl -I -H "Accept-Encoding: gzip, deflate" 192.168.100.26/
八、防盗链
在网站中,一般都要配置防盗链功能,以避免网站内容被非法盗用,造成经济损失,也避免了流量的浪费。
1.修改nginx.conf配置文件
vim /usr/local/nginx/conf/nginx.conf
location ~.(jpg|gif|swf)$ { #匹配.jpg 、.gif 、或 .swf结尾的文件
valid_referers none blocked .abc.com abc.com; #信任域名站点
if ( $invalid_referer ) {
rewrite ^/ http://www.abc.com/error.png; #重写返回error.png
}
}
2.重启nginx
killall -1 nginx
九、FPM参数优化
Nginx的PHP解析功能实现是由FPM处理的,为了提高PHP的处理速度,可对FPM模块进行参数的调整。
1.安装带有FPM模块的PHP环境;
2.FPM进程有两种启动方式,由pm参数指定,分别是static和dynamic,前者将产生固定数据的FPM进程,后者将以动态的方式产生FPM进程;
1.修改php-fpm.conf文件
vi php-fpm.conf
pid = run/php-fpm.pid
pm = dynamic #动态方式
pm.max_children=20 #最大启动进程数量为20个
pm.start_servers = 5 #初始启动时进程为5个
pm.min_spare_servers = 2 #最小空闲进程数为2个
pm.max_spare_servers = 8 #最大空闲进程数为8个
迎工作一到五年的Java工程师朋友们加入Java架构开发:860113481
群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
python 让挑选家具更方便
原文链接:https://mp.weixin.qq.com/s/tQ6uGBrxSLfJR4kk_GKB1Q 家中想置办些家具,听朋友介绍说苏州蠡(li第二声)口的家具比较出名,因为工作在苏州,也去那边看过,简直...,走断双腿都逛不完,更何况还疲于逛街的。 也浏览过家具城的官网,本着在一定的预算范围之类挑选最合适的,作为一个程序猿,一颗不安分的心,决定自己爬虫下网站,列出个excel表格,也方便给父母辈们查看,顺带再练习下爬虫的。 同样后期实地再去购买时,也可以带上这份表格进行参考。 关于爬虫的文章还有另外两篇实战的: python itchat 爬取微信好友信息 python爬虫学习:爬虫QQ说说并生成词云图,回忆满满 excel表格: image 词频统计: image 爬虫分析 打开官网 http://www.likoujiaju.com/ ,可以看到分类,这里以「沙发」来举例。 总共8页的数据,第一页的网址里 sell/list-66.html,第二页的sell/list-66-2.html,所以sell/list-66-1.html也就是第一页数据了,这样就更方便遍历网址来...
- 下一篇
深入理解JAVA中的NIO
前言: 传统的 IO 流还是有很多缺陷的,尤其它的阻塞性加上磁盘读写本来就慢,会导致 CPU 使用效率大大降低。 所以,jdk 1.4 发布了 NIO 包,NIO 的文件读写设计颠覆了传统 IO 的设计,采用通道+缓存区使得新式的 IO 操作直接面向缓存区,并且是非阻塞的,对于效率的提升真不是一点两点,我们一起来看看。 通道 Channel 我们说过,NIO 的核心就是通道和缓存区,所以它们的工作模式是这样的: 通道有点类似 IO 中的流,但不同的是,同一个通道既允许读也允许写,而任意一个流要么是读流要么是写流。 但是你要明白一点,通道和流一样都是需要基于物理文件的,而每个流或者通道都通过文件指针操作文件,这里说的「通道是双向的」也是有前提的,那就是通道基于随机访问文件『RandomAccessFile』的可读可写文件指针。 『RandomAccessFile』是既可读又可写的,所以基于它的通道是双向的,所以,「通道是双向的」这句话是有前提的,不能断章取义。 基本的通道类型有如下一些: FileChannel DatagramChannel SocketChannel ServerSo...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- MySQL8.0.19开启GTID主从同步CentOS8
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker安装Oracle12C,快速搭建Oracle学习环境