Nginx优化——连接超时,进程管理,压缩,防盗链(二)
发表于:2024-11-29 作者:千家信息网编辑
千家信息网最后更新 2024年11月29日,Nginx实现连接超时在企业网站中,为了避免同一个客户长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问时间使用fiddler工具查看connection参数超时参数Keepal
千家信息网最后更新 2024年11月29日Nginx优化——连接超时,进程管理,压缩,防盗链(二)
Nginx实现连接超时
- 在企业网站中,为了避免同一个客户长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问时间
- 使用fiddler工具查看connection参数
超时参数
Keepalive_timeout
设置连接保持超时时间,一般可只设置该参数,默认为65秒,可根据网站的情况设置,或者关闭,可在http段,server段,或者location段设置
Client_header_timeout
指定等待客户端发送请求头的超时时间
Client_body_timeout
设置请求体读超时时间
修改配置文件
[root@localhost ~]# cd /usr/local/nginx/conf/ [root@localhost conf]# vim nginx.conf ##修改配置文件#keepalive_timeout 0;keepalive_timeout 65 180; ##服务端和客户端的超时时间client_header_timeout 80; ##请求头部超时时间client_body_timeout 80; ##请求体超时时间[root@localhost conf]# service nginx stop ##关闭开启服务[root@localhost conf]# service nginx start
Nginx运行进程数
- 在高并发场景,需要启动更多的Nginx进程以保证快速响应,以处理用户的请求,避免造成阻塞
- 可以使用ps aux命令查看Nginx运行进程的个数
- 更改进程数的配置方法
修改配置文件,修改进程配置参数- 修改配置文件的worker_process参数
一般设为CPU的个数或者核数
在高并发情况下可设置为CPU个数或者核数的2倍- 运行进程数多一些,响应访问请求时,Nginx就不会临时启动新的进程提供服务,减少了系统的开销,提升了服务速度
- 使用ps aux查看运行进程数的变化情况
- 默认情况,Nginx的多个进程可能跑在一个CPU上,可以分配不同的进程给不同的CPU处理,充分利用硬件多核多CPU
- 在一台4核物理服务器,可进行以下配置,将进程进行分配
worker_cpu_affinity 0001 0010 0100 1000
1,查看当前的工作进程信息
[root@localhost ~]# ps aux | grep nginx ##查看进程信息root 7231 0.0 0.0 20548 620 ? Ss 01:57 0:00 nginx: master process ##主进程nginx 7232 0.0 0.0 23076 1400 ? S 01:57 0:00 nginx: worker process ##1个工作进程root 7372 0.0 0.0 112728 972 pts/2 S+ 02:07 0:00 grep --color=auto nginx
2,为虚拟机添加CPU
3,修改配置文件
[root@localhost ~]# cd /proc/[root@localhost proc]# cat cpuinfo ##查看cpu核心数processor : 0 ##第一个...processor : 1 ##第二个...[root@localhost proc]# cd /usr/local/nginx/conf/[root@localhost conf]# vim nginx.conf ##修改配置文件#user nobody;worker_processes 2; ##核心数为2worker_cpu_affinity 01 10; ##进程分配
4,查看工作进程
[root@localhost conf]# ps aux | grep nginx ##查看Nginx进程信息nginx 2329 0.0 0.0 23076 1392 ? S 20:12 0:00 nginx: worker process ##此时是两个工作进程nginx 2330 0.0 0.0 23076 1384 ? S 20:12 0:00 nginx: worker process
Nginx实现网页压缩功能
- Nginx的ngx_http_gzip_module压缩模块提供对文件内容压缩的功能
- 允许Nginx服务器将输出内容在发送客户端之前进行压缩,以节约网站带宽,提升用户的访问体验,默认已经安装
- 可在配置文件中加入相应的压缩功能参数对压缩性能进行优化
压缩功能参数
- gzip on:开启gzip压缩输出
- gzip_min_length 1k:用于设置允许压缩的页面最小字节数
- gzip_buffers 4 16k:表示申请4个单元为16k的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果
- zip_http_version 1.0:用于设置识别http协议版本,默认是1.1,目前大部分浏览器已经支持gzip解压,但处理最慢,也比较消耗服务器CPU资源
- gzip_comp_level 2:用来指定gzip压缩比,1压缩比最小,处理速度最快;9压缩比最大,传输速度快,但处理速度最慢,使用默认即可
- gzip_types text/plain:压缩类型,是就对那些网页文档启用压缩功能
- gzip_vary on:选项可以让前端的缓存服务器缓存经过gzip压缩的页面
实验环境
Linux服务器(192.168.13.142)一台win10测试机
1,修改配置文件添加压缩模块内容
[root@localhost ~]# cd /usr/local/nginx/conf/[root@localhost conf]# vim nginx.conf ##修改配置文件 #gzip on; ##开启gzip压缩功能(暂时不开启) gzip_min_length 1k; ##压缩阀值 gzip_buffers 4 16k; ##buffer 大小为4个16k缓冲区大小 gzip_http_version 1.1; ##压缩版本 gzip_comp_level 6; ##压缩比率,5,6适中 gzip_types text/plain application/x-javascript text/css image/jpg image/jpeg image/png image/gif application/xml text/javascript application/x-httpd-php application/javascript application/json; ##支持的类型格式 gzip_disable "MSIE [1-6]\."; ##禁用gzip条件,支持正则,表示ie6以下不启用gzip gzip_vary on; ##让前端的缓存服务器缓存经过gzip压缩的页面
2,在网页站点中插入图片
[root@localhost html]# mount.cifs //192.168.100.3/LAMP-C7 /mnt ##挂载共享Password for root@//192.168.100.3/LAMP-C7: [root@localhost html]# ls /mntapr-1.6.2.tar.gz Discuz_X2.5_SC_UTF8.zip LAMP-php5.6.txtapr-util-1.6.0.tar.gz error.png mysql-5.6.26.tar.gzawstats-7.6.tar.gz httpd-2.4.29.tar.bz2 nginx-1.12.0.tar.gzcronolog-1.6.2-14.el7.x86_64.rpm kali.jpg php-5.6.11.tar.bz2[root@localhost html]# cp /mnt/11.png ./ ##将图片复制到站点中[root@localhost html]# vim index.html ##将图片放到网页中Welcome to nginx!
##添加图片[root@localhost html]# service nginx stop ##关闭开启Nginx服务[root@localhost html]# service nginx start [root@localhost html]# systemctl stop firewalld.service ##关闭防火墙[root@localhost html]# setenforce 0
3,查看网页信息,并用fiddler抓包
4,开启gzip压缩功能
[root@localhost html]# vim /usr/local/nginx/conf/nginx.conf ##修改配置文件gzip on; ##开启压缩功能[root@localhost html]# service nginx stop ##关闭和开启Nginx服务[root@localhost html]# service nginx start
5,查看网页,并用fiddler抓包查看压缩情况
Nginx实现防盗链
在企业网站服务中,一般都要配置防盗链功能,以避免网站内容被非法盗用,以造成经济损失Nginx防盗链功能也非常强大。默认情况下,只需要进行简单的配置,即可实现防盗链处理
实验环境
一台Linux服务器(192.168.13.142)一台win7盗链网站(192.168.13.135)一台win10测试机
一,在win7盗链网站中创建一个盗链的网页
1,用文本创建一个网页内容,修改后缀为index.html
云计算 this is test web
##盗链的图片
2,搭建web网站,指定DNS服务器地址(192.168.13.142)
3,安装dns服务器
[root@localhost html]# yum install bind -y ##安装dns[root@localhost html]# vim /etc/named.conf options { listen-on port 53 { any; }; ##监听所有 listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; allow-query { any; }; ##允许所有[root@localhost html]# vim /etc/named.rfc1912.zones ##配置区域配置文件zone "kgc.com" IN { type master; file "kgc.com.zone"; ##kgc区域数据配置文件 allow-update { none; }; };[root@localhost html]# cd /var/named/ [root@localhost named]# cp -p named.localhost kgc.com.zone ##复制模板[root@localhost named]# vim kgc.com.zone ##修改区域配置文件$TTL 1D@ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1www IN A 192.168.13.142 ##本机地址[root@localhost named]# systemctl start named ##开启dns服务[root@localhost named]# systemctl stop firewalld.service ##关闭防火墙[root@localhost named]# setenforce 0
4,用测试机访问盗链网站,原网站
5,修改配置文件,开启防盗链功能
[root@localhost named]# vim /usr/local/nginx/conf/nginx.conf##在server段插入防盗链配置 error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~*\.(jpg|gif|swf)$ { ##支持格式 valid_referers none blocked *.kgc.com kgc.com; ##允许kgc.com为后缀访问 if ( $invalid_referer ) { rewrite ^/ http://www.kgc.com/error.png; ##不是则发送错误图片 } }[root@localhost named]# cp /mnt/error.png /usr/local/nginx/html/ ##将防盗链图片放到站点中[root@localhost named]# service nginx stop ##关闭开启Nginx服务[root@localhost named]# service nginx start
6,利用测试机访问盗链网站
对FPM模块进行参数优化
- Nginx的PHP解析功能实现如果是交由FPM处理的,为了提高PHP的出来速度,可对FPM模块进行参数的调整
- FPM模块参数调整,要根据服务器的内存与服务器负载进行调整
- 启动fpm进程方式
static:将产生固定数量的fpm进程
dynamic:将以动态的方式产生fpm进程
通过pm参数指定
FPM优化参数
- static的方式的参数
pm.max_children:指定启动的进程数量- Dynamic方式的参数
pm.max_children:指定启动的进程数量最大的数量
pm.start_servers:动态方式下初始的fpm进程数量
pm.min_spare_servers:动态方式下最小的fpm空闭进程数
pm.max_spare_servers:动态方式下最大的fpm空闭进程数
FPM优化参数调整
优化原因:服务器为云服务器,运行了个人论坛,内存为1.5G,fpm进程数为20,内存消耗近1G,处理比较慢优化参数调整:FPM启动时有5个进程,最小空闲2个进程,最大空闲8个进程,最多可以有20个进程存在
谢谢阅读!
进程
服务
配置
参数
文件
服务器
功能
网站
网页
处理
防盗
图片
方式
时间
情况
内存
内容
数量
模块
缓存
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
华南农业大学数据库技术专业
重庆软件开发合肥
拥抱互联网科技
怎么创建新的数据库表
网络安全领域增长空间有限
higoplay服务器框架
淮安市网络安全和信息化
数据库怎样定义模式
洛奇英雄传db3数据库修改
今年网络安全开了哪些会议
加强 网络安全
官兵手机网络安全讨论发言
隆基软件开发部怎么样
防护网络安全培训
江苏计算机网络技术口碑推荐
网络安全提升年总结
网络安全申查法
安卓仓库管理软件开发
河南服务器钣金机箱价格
医院数据库泄露
网络安全三级系统
广东软件开发商有哪些
商品及属性数据库设计
数据库复制按钮
学校网络安全活动照片
社交软件开发的demo
计算机网络技术电竞
国内免备案服务器
2008数据库怎么找数据库密码
广西速驰软件开发公司