如何对Nginx服务进行优化-创新互联
前言
Nginx作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务器对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。
处理静态文件,索引文件以及自动索引;打开文件描述符缓冲。
无缓存的反向代理加速,简单的负载均衡和容错。
FastCGI,简单的负载均衡和容错。
模块化的结构。包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter。如果由 FastCG或其它代理服务器处理单页中存在的多个 SSI,则这项处理可以并行运行,而不需要相互等待。
1.1、修改配置文件法
1、先查看版本基本信息
curl -I http://自己的IP地址
专业从事成都网站建设、网站制作,高端网站制作设计,微信小程序定制开发,网站推广的成都做网站的公司。优秀技术团队竭力真诚服务,采用H5场景定制+CSS3前端渲染技术,成都响应式网站建设公司,让网站在手机、平板、PC、微信下都能呈现。建站过程建立专项小组,与您实时在线互动,随时提供解决方案,畅聊想法和感受。2、Nginx的配置文件添加:server_tokens 选项的值设置为off
vim /usr/local/nginx/conf/nginx.conf
http {
include mime.types;
default_type application/octet-stream;
#下面添加一段,关闭版本显示
server_tokens off;
3、重启服务
//先关闭服务,再开启服务
service nginx stop
service nginx start
4、再用 curl 命令查看版本
1.2、修改源码法
Nginx 源码文件 /pot/nginx-1.12.0/src/core/nginx.h
包含了版本信息,可以随意设置
重新编译安装,隐藏版本信息
1、修改版本号
#先把刚才添加的那段话的 off(关闭),改成 on(开启)
vim /usr/local/nginx/conf/nginx.conf
cd /opt/nginx-1.12.2/src/core/
vim /opt/ningx-1.12.2/src/core/nginx.h
define nginx_version 1012002
define NGINX_VERSION "1.1.1" //自定义一个版本号
define NGINX_VER "nginx/" NGINX_VERSION
2、配置编译
cd nginx-1.12.2/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
make && make install
3、启动服务,查看版本
#在启动服务
service nginx stop
service nginx start
#在查看,就会发现有一个我们自己伪造的一个版本号
curl -I http://IP地址/
Sercer: nginx/1.1.1 #伪造的版本号
注意:如果版本号没有伪造成功,也不显示,有可能是配置文件中关闭了版本显示。解决:删除server_tokens off;
二、修改Nginx用户与组
Nginx运行时进程需要有用户与组的支持,以实现对网站文件读取时进行访问控制
Nginx默认使用nobody用户账号与组账号,一般也要进行修改
修改的方法:
编译安装时指定用户与组
修改配置文件指定用户与组
2.1、修改配置文件指定用户与组
vim /usr/local/nginx/conf/nginx.conf
#user nobody;
//去掉前面注释符“ # ”,修改 nobody 指定用户与组 nginx nginx;
主进程由root创建 子进程由nginx创建
三、配置Nginx网页缓存时间
当Nginx将网页数据返回给客户端后,可设置缓存的时间,以方便在日后进行相同内容的请求时直接返回,避免重复请求,加快了访问速度
一般针对静态网页设置,对动态网页不设置缓存时间
可在Windows客户端中使用fiddler查看网页缓存时间
设置方法 :
可修改配置文件,在http段、 或者server段、 或者location段加入对特定内容的过期参数
1、复制一张图片到 nginx 的站点目录下
#在自己的共享文件中 找到" game.jpg "
mkdir /abc
mount.cifs //192.168.56.1/lamp7 /abc
cd /abc/wl
//我的图片在wl的包里
//复制图片 game.jpg 到站点目录下
cp /abc/wl/game.jpg /usr/local/nginx/html/
cd /usr/local/nginx/html
2、将图片加入到网页内容中
#修改
vim index.html
#在 Welcome to nginx 的下面添加一段
3、改nginx的配置文件
vim /usr/local/nginx/conf/nginx.conf
#在 http {}段,添加一个
location ~\.(gif|jepg|jpg|ico|bmp|png)$ {
root html;
expires 1d;
}
4、启动服务
#重启服务
service nginx restart
5、在win10验证
四、配置日志分割
随着Nginx运行时间增加,日志也会增加。为了方便掌握Nginx运行状态,需要时刻关注Nginx日志文件
太大的日志文件对监控是一个大灾难
定期进行日志文件的切割
Nginx自身不具备日志分割处理的功能,但可以通过Nginx信号控制功能的脚本实现日志的自动切割,并通过Linux的计划任务周期性地进行日志切割
编写脚本进行日志切割的思路 :
设置时间变量
设置保存日志路径;
将目前的日志文件进行重命名
删除时间过长的日志文件
设置cron任务,定期执行脚本自动进行日志分割
1、编写脚本实现分割
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
2、执行脚本
chmod +x fenge.sh
./fengs.sh
//可以把当前时间修改为2019.12.29,(可以自定义)
date -s 2019-12-29
3、设置cron任务,定期执行脚本自动进行日志分割
执行周期性计划任务
crontab -e
0 1 * * * /opt/fengs.sh
五、实现连接超时
在企业网站中,为了避免同- -个客户长时间占用连接,
造成资源浪费,可设置相应的连接超时参数,实现控制
连接访问时间
使用Fiddler工具查看connection参数
超时参数讲解 :
Keepalive_timeout
设置连接保持超时时间,一般可只设置该参数,默认为75秒,可根据网站的情况设置,或 者关闭,可在http段、server段、 或者location段设置
Client_header_timeout
指定等待客户端发送请求头的超时时间
Client_body_timeout
设置请求体读超时时间
1、修改配置文件
cd /usr/local/nginx/conf
vim nginx.conf
#在 http {}段 :下面添加
keepalive_timeout 65 180;
client_header_timeout 80;
client_body_timeout 80;
//重启服务
service nginx restart
在win10用fidder验证。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
当前题目:如何对Nginx服务进行优化-创新互联
链接URL:http://pwwzsj.com/article/djjgcd.html