目录
一、nginx的优化
1.1 配置nginx隐藏版本号
1.1.1 查看nginx的版本号
①在网页上F12查看
②在xshell上nginx -v
③curl -I http://网站名
1.1.2 nginx隐藏版本号的方法
①第一种:修改配置文件
vim /usr/local/nginx/conf/nginx.conf
http {
include mime.types;
default_type application/octet-stream;
server_tokens off; 添加;关闭版本号
}
设置关闭显示版本号
再去检测可看到版本号已经被隐藏
②第二种:修改配置文件在重新编译
vim /opt/nginx-1.12.2/src/core/nginx.h
#define NGINX_VERSION "8.8。8.8" #修改版本号
#define NGINX_VER "IIS" new_VERSION #修改服务器类型
cd /opt/nginx-1.12.2/ 进入到nginx-1.12.2目录下
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make 进行编译
#把/usr/local/nginx/sbin目录下的nginx移到/usr/local/nginx目录下做个备份
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/
##查看目录下
ls /usr/local/nginx
#把objs目录下的nginx 复制 /usr/local/nginx/sbin目录下
cp objs/nginx /usr/local/nginx/sbin/
#查看
ls /usr/local/nginx/sbin/
编辑/usr/local/nginx/conf/nginx.conf的文件打开版本号显示
http {
server_tokens on;
}
systemctl restart nginx 重启nginx服务
curl -I http://192.168.58.88 去查看修改后的版本信息
1.2 修改nginx用户和组
1.2.1 在安装nginx时,编译安装中配置
-
./configure \
-
--prefix=/usr/local/nginx \
-
--user=nginx \ #指定用户名
-
--group=nginx \ #指定组名
-
--with-http_stub_status_module
-
make && make install
1.2.2修改主配置文件
vim /usr/local/nginx/conf/nginx.conf
user nginx nginx; 修改用户为nginx,组也为nginx
1.3 配置nginx页面缓存的时间
客户端访问时,nginx会把网页缓存数据给客户端,如果设置好数据的缓存时间,可以方便日后客户端在访问时的直接能够返回数据,避免了多次的三次握手的连接请求,加快了连接的速度。
设置缓存时间一般针对的是静态页面,对于动态页面不设置缓存时间
1.3.1 修改nginx的主配置文件
①在主配置文件的location部分加入expires的参数后面跟上缓存的天数
-
location ~ \.(gif|jpg|jepg|png|bmp|ico)$ { #加入新的 location,以图片作为缓存对象
-
root html;
-
expires 1d; #指定缓存时间,1天
②设置网页面
-
cd /usr/local/nginx/html
-
先将diqiu.jpg文件传到/usr/local/nginx/html目录下
-
然后vim index.html
-
<img src="diqiu.jpg"/> #在网页中插入图片
-
</body>
-
</html>
1.4 nginx的日志分割
nginx的运行会导致日志的增多会导致磁盘空间不足问题,所以我们要定期的去清理日志。
日志在/usr/local/nginx/logs下面
通过日志分割可以截取保存日志的时间为文件名,对迅速找到相应的日志内容
1.4.1 编写脚本去进行日志的分割
vim /usr/local/nginx/conf/nginx.conf
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main; ##去除前面#号
}
创建一个日志分割的脚本
#!/bin/bash
day=$(date -d "-1 day" "+%Y%m%d")
logs="/var/log/nginx"
pid="/usr/local/nginx/logs/nginx.pid" ###设置日期及路径变量
[ -d $logs ] || mkdir -p $logs ###自动创建日志目录
mv /usr/local/nginx/logs/access.log ${logs}/test.com-access.log-$d ###分割新的日志
kill -HUP $(cat $pid) ###生成新的日志
find $logs -mtime +30 -exec rm -rf {} ;
注释:
ctime(status time):
当修改文件的权限或者属性的时候,就会更新这个时间,ctime并不是create time,更像是change time,
只有当更新文件的属性或者权限的时候才会更新这个时间,但是更改内容的话是不会更新这个时间。
atime(accesstime):
当使用这个文件的时候就会更新这个时间。
mtime(modification time):
当修改文件的内容数据的时候,就会更新这个时间,而更改权限或者属性,mtime不会改变,这就是和ctime的区别。
1.5 nginx的连接超时
在nginx的主配置文件中的http下有个keepalive的模式。当收到客户端的访问请求时,keepalive可以保证连接时的超时信息可以节省资源,避免对性能的影响。
在vim /usr/local/nginx/conf/nginx.conf的主配置文件下
keepalive_timeout :
第一个65表示:
指定每一个TCP连接的时间最多保持65秒,超时服务器将会在这个时间后关闭连接
第二个180表示:
超过这个时间后浏览器主动关闭连接,这样就不用让服务器去关闭了
client_header_timeout:
客户端向服务端发送一个超时时间 如果客户端在指定时间内没有完成发送一个完整的reguest header,则nginx会返回一个408
client_body_timeout:
指定客户端与服务端建立连接后request body的超时时间
1.6 更改nginx的进程数
在高并发的场景下,为了处理更多的用户请求避免堵塞,所以要扩大nginx的进程数
查看cpu核的数量
cat /proc/cpuinfo | grep -c "\physical id"
配置cpu为4核, 0001表示第一个进程对应的是第一个内核,0010表示第二个进程对应的是第二个内核,以此类推
当我们修改nginx的内核数和连接数量时也要修改系统链接数量
ulimit -a 去查看系统的连接数量
ulimit -n 数字 修改链接数
1.7 配置nginx的网页压缩功能
vim /usr/local/nginx/conf/nginx.conf
gzip on; #取消注释,开启gzip压缩功能
gzip_min_length 1k; #最小压缩文件大小
gzip_buffers 4 64k; #压缩缓冲区,大小为4个64k缓冲区
gzip_http_version 1.1; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
gzip_comp_level 6; #压缩比率(1压缩比最小,处理速度最快 9压缩比最大,效率低)
gzip_vary on; #支持前端缓存服务器存储压缩页面
gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss image/jpg image/jpeg image/png image/gif
application/x-httpd-php application/javascript application/json;
#压缩类型,表示哪些网页文档启用压缩功能
cd /usr/local/nginx/html
先将图片文件传到/usr/local/nginx/html目录下
vim index.html
#网页中插入图片
<img src="diqiu.jpg"/>
systemctl restart nginx.service
在我们在网页上测试的时候,可以看到content-type的压缩功能已经显示
二、配置防盗链
在企业的网站服务器中一般都要去配置防盗链的功能,避免自己服务器的网站被非法的使用造成损失。
2.1 当我们在服务器上未开启防盗链时:
盗链的服务器(192.168.58.100)
①在/var/www/html/index.html下面设置需要盗取的网站
www.ww.com/diqiu.jpg是被盗的服务器的网站
②添加域名的映射
echo "192.168.58.88 www.ww.com" >> /etc/hosts
echo "192.168.58.100 www.ss.com" >> /etc/hosts
③在/usr/local/nginx/conf/nginx.conf 下设置地址
④搜索自己的域名就可以看到被盗服务器下的内容
2.2 当我们开启防盗链时
在主服务器下设置防盗链(192.168.58.88 www.ww.com)
①配置/usr/local/nginx/conf/nginx.conf
vim /usr/local/nginx/conf/nginx.conf
http {
......
server {
......
location ~*\.(jpg|gif|swf)$ {
valid_referers *.ww.com ww.com;
if ( $invalid_referer ) {
rewrite ^/ http://www.ww.com/error.png;
#return 403;
}
}
......
}
}
————————————————
版权声明:本文为CSDN博主「醉凡尘¢ World1y」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/WuDan_1112/article/details/124889068
其中:
~* \.(jpg|gif|jepg|bmp|ico)$ :这段正则表达式表示匹配不区分大小写,以.jpg 或.gif或.swf结尾的文件;
valid_referers:设置信任的网站,可以正常使用图片;
none:允许没有http_refer的请求访问资源(根拼Referer的定义,它的作用是指示一个请求是从哪里链接过来的,如果直接在浏览器的地址栏中输入一个资源的URL地址,那么这种请求是不会包含Referer字段的),如http://www.jzm.com/caocao.jpg
我们使用 http://www.jzm.com访问显示的图片,可以理解成http://www.jzm.com/caocao.jpg 这个请求是从http://www.jzm.com这个链接过来的。
blocked:允许不是http://开头的,不带协议的请求访问资源;
if语句:链接来源域名不在valid_referers所列出的列表中,$invalid_referer为true,则执行后面的操作,即进行重写或返回403页面。
②在/usr/local/nginx/html下导入两张图片
③准备网页
cd /usr/local/nginx/html
将diqiu.jpg、error.png文件传到/usr/local/nginx/html目录下
vim index.html
<img src="diqiu.jpg"/>
</body>
</html>
echo "192.168.58.88 www.ww.com" >> /etc/hosts
echo "192.168.58.100 www.ss.com" >> /etc/hosts
在盗链服务器上配置(192.168.58.100 www.ss.com)
①配置盗链的路径
②配置主配置文件
/usr/local/nginx/conf/nginx.conf
③域名解析
echo "192.168.58.88 www.ww.com" >> /etc/hosts
echo "192.168.58.100 www.ss.com" >> /etc/hosts
验证访问盗链机子的地址
会发现会访问到报页面
三、fpm参数优化
1、Nginx 的 PHP 解析功能实现如果是交由 FPM 处理的,为了提高 PHP 的处理速度,可对
FPM 模块进行参数跳转。
2、FPM 优化参数:
pm 使用哪种方式启动 fpm 进程,可以说 static 和 dynamic,前者将产生固定数量的 fpm 进程,后者将以动态的方式产生 fpm 进程
pm.max_children :static 方式下开启的 fpm 进程数
pm.start_servers :动态方式下初始的 fpm 进程数量
pm.min_spare_servers :动态方式下最大的 fpm 空闲进程数
pm.max_spare_servers :动态方式下最大的 fpm 空闲进程数
3、优化原因:服务器为云服务器,运行了个人论坛,内存为1.5G,fpm进程数为20,内存消耗近1G,处理比较慢
4、优化参数调整
FPM启动时有5个进程,最小空闲2个进程,最大空闲8个进程,最多
可以有20个进程存在
vim /usr/local/php/etc/php-fpm.conf
pid = run/php-fpm.pid
vim /usr/local/php/etc/php-fpm.d/www.conf
--96行--
pm = dynamic #fpm进程启动方式,动态的
--107行--
pm.max_children=20 #fpm进程启动的最大进程数
--112行--
pm.start_servers = 5 #动态方式下启动时默认开启的进程数,在最小和最大之间
--117行--
pm.min_spare_servers = 2 #动态方式下最小空闲进程数
--122行--
pm.max_spare_servers = 8 #动态方式下最大空闲进程数
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid` #重启php-fpm
netstat -anpt | grep 9000
总结
nginx的优化
1.配置nginx影藏版本号;
2.修改nginx用户和组;
3.配置nginx网页缓存时间
4.配置nginx实现连接超时
5.更改nginx工作进程数
6.配置nginx实现网页压缩功能
7.实现nginx的日志切割
8.nginx防盗链的配置