Nginx深度优化

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 隐藏版本号修改用户与组网页缓存时间日志切割连接超时更改进程数网页压缩防盗链FPM参数优化一、隐藏版本号1.在centos7系统中通过curl命令查看curl -I http://192.

隐藏版本号

修改用户与组

网页缓存时间

日志切割

连接超时

更改进程数

网页压缩

防盗链

FPM参数优化

一、隐藏版本号

1.在centos7系统中通过curl命令查看

curl -I http://192.168.100.26

img_d2914eaeb51764f724aa131bde0fa38d.jpe

2.修改nginx.conf配置文件,在http{}内添加server_tokens off;语句

img_53e714c561ae161743c39a57e5ffc978.jpe

3.重启nginx

killall -1 nginx

4.使用curl命令查看验证

curl -I http://192.168.100.26

img_b9faaf3c74e11faccb9928617239bec4.jpe

二、修改用户与组

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

img_b846c45399986ad6fe1128ea75e1205e.jpe

3.重启nginx

killall -1 nginx

4.查看nginx进程信息(主进程root用户,子进程nginx用户)

ps aux | grep nginx

img_5a9d0ccfbdc311be5e78317f11c85849.jpe

三、网页缓存时间

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

1.下面对网站的图片进行指定缓存时间设置

img_c0d845dd4b585405a194eb85a2267347.jpe

2.修改nginx配置文件,指定缓存时间为1天

vim /usr/local/nginx/conf/nginx.conf

location ~.(gif|jpg|jepg|png|bmp|ico)$ {

root html;

expires 1d;

}

img_5e118dfa7005583063a977f4bdcffb49.jpe

3.重启nginx

killall -1 nginx

4.Fiddler工具进行抓包验证

img_1ff9fe45d79a3f5c327d7dd05e908a69.jpe

四、日志切割

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 logspath]||mkdirplogs_path

mv /usr/local/nginx/logs/access.log logspath/test.comaccess.logd

kill -USR1 (catpid_path) #创建新日志文件

find $logs_path -mtime +30 | xargs rm -rf #删除30天前的日志文件

2. 为脚本赋予执行权限

chmod +x /opt/fenge.sh

3.执行脚本,测试日志文件是否分割成功

. /fenge.sh

img_290188f6b2d370be6912aa97a9aedb7a.jpe

4.添加计划性任务

crontab -e

#每日凌晨1:00执行脚本

0 1 * /opt/fenge.sh

五、连接超时

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

1. 修改nginx.conf配置文件

vim /usr/local/nginx/conf/nginx.conf

img_493ee0586bc73977c01e28e6effe493e.jpe

2.重启nginx

killall -1 nginx

3.对网站进行访问,并使用Fiddler工具进行抓包验证

img_c968dd7505ee8c0f290e646c9144fa31.jpe

六、更改进程数

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

1.查看ngixn运行进程的个数

cat /proc/cpuinfo | grep -c "physical"

2.修改nginx.conf配置文件

vim /usr/local/nginx/conf/nginx.conf

img_60705ef1052c9a0827af3b71e1d2cff3.jpe

3.重启nginx

killall-1 nginx

4.查看nginx进程数

ps aux | grep nginx

img_617af2d7494bdbb9cd5d27422a3e4730.jpe

七、网页压缩

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/

img_b103e9cd9da5c6d83be88e803d57b83a.jpe

八、防盗链

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

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等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
打赏
0
0
0
0
71
分享
相关文章
nginx优化:URI过长或request header过大导致400或414报错
当出现URI过长或请求头过大导致400或414报错时,可以通过以下方式对Nginx进行优化: 1. 调整client_max_body_size参数:该参数用于限制请求体的大小。默认情况下,Nginx的client_max_body_size参数设置为1M。如果请求体超过这个大小,Nginx会返回400错误。您可以根据实际需求适当增加这个值,例如设置为10M或更大。 ``` http { client_max_body_size 10M; } ``` 2. 调整large_client_header_buffers参数:该参数用于调整请求头缓冲区的大
5174 0
负载均衡指南:Nginx与HAProxy的配置与优化
负载均衡指南:Nginx与HAProxy的配置与优化
278 3
nginx相关配置及高并发优化
Nginx的高并发优化是一个综合性的过程,需要根据具体的业务场景和硬件资源量身定制。以上配置只是基础,实际应用中还需根据服务器监控数据进行持续调整和优化。例如,利用工具如ab(Apache Benchmarks)进行压力测试,监控CPU、内存、网络和磁盘I/O等资源使用情况,确保配置的有效性和服务的稳定性。
224 0
Django后端架构开发:Nginx服务优化实践
Django后端架构开发:Nginx服务优化实践
139 2
"揭秘!SpringBoot携手Nginx,性能飙升秘籍大公开:轻松掌握配置优化,让你的应用快如闪电!"
【8月更文挑战第11天】随着微服务架构的发展,SpringBoot成为构建RESTful API的首选,Nginx则作为高性能的反向代理服务器提升应用性能。本文将探讨两者如何协同工作,包括Nginx的负载均衡策略、静态资源缓存及数据压缩配置;同时讨论SpringBoot的线程池优化、缓存策略及性能监控。通过这些方法,帮助开发者显著提高系统的整体性能和可用性。
371 1
Nginx反向代理优化
教你如何做好Nginx反向代理优化
163 5
前端开发者必备:Nginx入门实战宝典,从部署到优化一网打尽(2)
前端开发者必备:Nginx入门实战宝典,从部署到优化一网打尽
142 1
前端开发者必备:Nginx入门实战宝典,从部署到优化一网打尽(1)
前端开发者必备:Nginx入门实战宝典,从部署到优化一网打尽
325 1
深入探索Nginx高性能Web服务器配置与优化
【5月更文挑战第7天】本文深入探讨了Nginx的配置与优化,重点介绍了基础配置参数如`worker_processes`、`worker_connections`和`keepalive_timeout`,以及优化策略,包括使用epoll事件驱动模型、开启gzip压缩、启用缓存、负载均衡和安全配置。此外,还提到了性能调优工具,如ab、nginx-stats和nmon,以助于提升Nginx的性能和稳定性。