文章目录
- 一、Nginx服务优化
- 1.隐藏版本号
- 2.日志分割
- 3.设置页面压缩
- 4.配置网页缓存时间
- 5.设置连接超时
- 6.Nginx并发设置优化(更改进程数)
- 7.修改用户与组
- 8.配置防盗链
- 总结
一、Nginx服务优化
1.隐藏版本号
隐藏Nginx版本号,以避免泄露Nginx的版本,使攻击者不能针对特定的版本进行攻击。
1、查看Nginx版本的命令curl,在centos中使用curl -I http://192.168.40.103查看版本号。
2、隐藏Nginx版本号有两种方式:第一种是修改Nginx源码文件,指定不显示版本号,第二种是修改Nginx的主配置文件。
(1)修改Nginx主配置文件
(2)修改Nginx源码文件
然后编译安装,才可以隐藏版本信息。
2.日志分割
nginx本身不带日志分割工具,所有在工作当中,所有的nginx的日志分割,都是以shell脚本的形式来实现日志的分割。
(1)vim /opt/nginxlog.sh
#!/bin/bash
#获取当前日期
d=$(date +%Y-%M-%d)
#定义存储目录
dir="/usr/local/nginx/logs/"
#定义需要分割的日志源文件
logs_file='/usr/local/nginx/logs/access.log'
logs_error='/usr/local/nginx/logs/error.log'
#定义nginx服务的pid文件
pid_file='/usr/local/nginx/logs/nginx.pid'
if [ ! -d $dir ]
then
mkdir $dir
fi
#移动日志文件access error,重新命名
mv ${logs_file} ${dir}/access${d}.log
mv ${logs_error} ${dir}/error${d}.log
#发送信号,给nginx主程序,让nginx生成新的日志文件
kill -USR1 $(cat ${pid_file})
#日志文件清理,把30天前的日志,直接清除
find $dir -mtime +30 -exec rm -rf {} \;
(2)设定定时任务,定期执行脚本自动进行日志分割。
3.设置页面压缩
Nginx的ngx_http_gzip_module压缩模块提供对文件内容压缩的功能,允许Nginx服务器将输出内容在发送客户端之前进行压缩,以节约网站带宽,提升用户的访问体验,默认已经安装可在配置文件中加入相应的压缩功能参数对压缩性能进行优化。
gzip on:开启gzip压缩输出,
gzip_min_length 1k:用于设置允许压缩的页面最小字节数。
gzip_buffers 4 64k:压缩的缓冲区,4个64k缓冲区。
gzip_http_version 1.1:压缩版本,默认1.1。
gzip_comp_level 6:压缩级别1-9,6不大不小,不快不慢,正好。
gzip_vary on:支持前端缓存服务器的压缩功能打开。
gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml/xml application/xml+rss image/jpg image/jpeg image/png image/gif application/x-httpd-php application/javascript application/json;
支持压缩的类型文本、xml、图片都可以压缩。
4.配置网页缓存时间
页面缓存时间:避免重复访问,导致访问速度变慢,加快访问的时间,主要针对静态页面,动态页面不设置缓存时间。
修改Nginx的配置文件,在新local段加入expires参数,指定缓存的时间。
/usr/local/nginx/conf/nginx.conf #修改配置文件
location ~* \.(gif|jpg|jepg|bmp|ico)$ { #添加新的location段加入expires参数,指定缓存>时间。
root html;
expires 1d; #添加缓存时间为1d;
}
保存退出!重启服务器。
5.设置连接超时
连接超时:避免同一个客户长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现对连接访问时间的控制。
设置keepalive_timeout超时时间。
keepalive:缓存记录时间。
vim /usr/local/nginx/conf/nginx.conf #修改配置文件
#keepalive_timeout 0;
keepalive_timeout 60; #指定的TCP连接最多65秒。Nginx默认为65秒,一般浏览器设为60秒。
client_header_timeout 60; #请求头的超时时间,没有在60秒内发送完整的请求头,nginx返回408,
请求超时;
client_body_timeout 60; #请求体超时,没有在60秒内向web服务器请求,发送任何内容,nginx返回
408,请求超时。
systemctl restart nginx #重启服务
6.Nginx并发设置优化(更改进程数)
高并发场景,需要启动更多nginx进程以保证快速响应,处理用户请求,避免阻塞。
[root@localhost opt]# vim /usr/local/nginx/conf/nginx.conf #修改配置文件
#user nobody;
worker_processes 2; #指定内核数
worker_cpu_affinity 01 10; #指定工作的内核编号。
[root@localhost opt]# nginx -t #测试语法是否正常
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost opt]# systemctl restart nginx #重启服务
7.修改用户与组
Nginx运行时进程需要有用户与组的支持,用以实现对网站文件读取时进行访问控制。主进程有root创建,子进程由指定的用户与组创建。Nginx默认使用nobody用户账号与组账号,需要修改为/sbin/nologin。
[root@localhost opt]# vim /usr/local/nginx/conf/nginx.conf #修改配置文件
user nginx nginx; #取消注释,修改用户为 nginx ,组为 nginx
worker_processes 2;
worker_cpu_affinity 01 10;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
systemctl restart nginx #重启服务
8.配置防盗链
设置防盗链是为了避免网站内容被非法盗用,造成经济损失,也避免不必要的宽带浪费。
location ~* \.(jpg|gif|swf)$ {
valid_referers none blocked *.kgc.com kgc.com;
if ( $invalid_referer ) {
rewrite ^/ http://www.kgc.com/error.png;
#return 430;
}
访问www.kgc.com
访问www.benet.com
总结
Nginx服务优化包括隐藏版本号、更改用户与组、配置网页缓存时间、日志分割、设置连接超时、更改进程数、配置网页压缩、配置防盗链。