如何对Nginx服务进行优化
发表于:2025-02-07 作者:千家信息网编辑
千家信息网最后更新 2025年02月07日,前言Nginx作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务器对外进行服务。Nginx采用C进行编写,不论是系统资源开
千家信息网最后更新 2025年02月07日如何对Nginx服务进行优化Nginx作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务器对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。
前言
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地址
2、Nginx的配置文件添加:server_tokens 选项的值设置为off
vim /usr/local/nginx/conf/nginx.confhttp { include mime.types; default_type application/octet-stream;#下面添加一段,关闭版本显示 server_tokens off;
3、重启服务
//先关闭服务,再开启服务service nginx stopservice 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.confcd /opt/nginx-1.12.2/src/core/vim /opt/ningx-1.12.2/src/core/nginx.hdefine nginx_version 1012002define 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_modulemake && make install
3、启动服务,查看版本
#在启动服务service nginx stopservice 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 /abcmount.cifs //192.168.56.1/lamp7 /abccd /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.shd=$(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_pathmv /usr/local/nginx/logs/access.log ${logs_path}/test.com-access.log-$dkill -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 -e0 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验证。
文件
日志
服务
时间
版本
配置
用户
网页
脚本
参数
缓存
任务
图片
客户
处理
运行
均衡
信息
内容
客户端
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库原理与技术关系运算
系统是用什么软件开发的
陕西考研网络安全
通过网络安全法的意义
网络安全大学生暑假实践报告
未找到与主机名相同的服务器
网络安全报告多少钱
什么是网络技术转让产品
购物车订单退出数据库
中国航空发动机软件开发
怎么管理服务器的补丁
软件开发对显卡要求高吗
新一代网络技术的应用
品牌取名软件开发
沈阳和济南哪个软件开发企业多
设计其空间数据库建库的方案
中国网络安全发展特点
手机设置出现未连接服务器
天问互联网科技
enspserver服务器配置
终端服务器安全层在协议流
盐城网络led大屏服务器
天津软件开发哪个区多
泛微oa安装后无法初始化数据库
验证码软件开发公司
乡镇网络安全宣讲稿
怎么改扫号数据库
盈实互联网络科技被抓
ibm服务器管理端口修改
互联网网络安全的发展