Nginx优化

引言:

Nginx是我们呢日常生产中常用的生产工具,小编略举了几个生产中常用的优化小知识,给大家分享下。

一、比如在大促期间双十一时,在可以重启的状态下,nginx如何优化

①:在可以重启的状态下,为避免同一客户端长时间占用连接,造成资源浪费,可在http段设置相应的连接超时参数keepalive_timeout,实现控制连接访问时间
②:当Nginx将网页数据返回给客户端后,可针对静态网页设置缓存时间,在配置文件内的http段内的server段内添加location,配置expires 1d;避免重复请求,加快了访问速度
③:在高并发场景,需要启动更多的nginx进程以保证快速响应,避免造成阻塞;配置worker_processes开启多进程
④:可在配置文件中加入相应的压缩功能参数对压缩性能进行优化,以节约网站带宽,提升用户的访问体验

二、Nginx 前端页面/图片加载不出来,你是怎么排查故障的

① 首先文件的格式是否正常,看我服务端html目录下是否有图片,若确定在,再去nginx的配置文件中查看是否支持我上传图片的格式,所以我会去/usr/local/nginx/conf/nginx.conf,添加我上传图片的格式
,然后去我的测试端浏览器中清空缓存再次测试

② 查看缓冲区内存是否过小,是否我上传的图片过大,是否需要压缩图片在我测试端浏览器中是会先把文件加载到缓冲区,但是若上传的文件大小大于我的缓冲区,肯定就无法加载出来,
去/usr/local/nginx/conf/nginx.conf中的gzip_buffers参数的大小,可以调整缓冲器的大小或者压缩图片

三、Nginx里如何做到3-5万高并发,你平常遇到高并发数量是多少?

① 单线多工作模式
首先不需要cpu的上下文切换,不需要再同级进程之间通信

② master和worker的职责关系
master是生成、管理、监控worker的运行状态
管理是指加载配置文件
worker接收master信息,通过信号连接客户端进行处理请求,生成数据并返回客户端,
最后关闭(是worker直接连接的)

③ 遇到的高并发数据是多少1.5-2万之间
首先3-5万是官方测试数据,并非实际生产环境的数据,官方跟我们的设备是有差距的:
首先是请求的长度(解析时间就会变长),数据处理速度与官方是不可复制的

四、Nginx有哪些优化?

nginx优化网页访问速度:
①:在可以重启的状态下,为避免同一客户端长时间占用连接,造成资源浪费,可在http段设置相应的连接超时参数keepalive_timeout,实现控制连接访问时间
②:当Nginx将网页数据返回给客户端后,可针对静态网页设置缓存时间,通过在配置文件内的http段内的server段内添加location,更改字段expires 1d来实现;避免重复请求,加快了访问速度
③:在高并发场景,需要启动更多的nginx进程以保证快速响应,避免造成阻塞;配置worker_processes开启多进程
④:可在配置文件中加入相应的压缩功能参数对压缩性能进行优化,以节约网站带宽,提升用户的访问体验
⑤:若nginx的PHP解析功能实现是交给FPM处理的,为了提高PHP的处理速度,要根据服务器的内存与服务负载进行FPM模块参数调整;比如增加dynamic(动态)的方式产生fpm进程。

五、nginx服务器本身安全性的优化

nginx服务器本身安全性的优化
①:在生产环境中,需要隐藏Ngnx的版本号,以避免安全漏洞的泄漏;可以通过http端内的添加server_tokens off来关闭显示版本号,或者通过修改源码
②:需要有用户与组的支持,用以实现对网站文件读取时进行访问控制;这里有两种方法进行配置
第一种:通过编译 nginx 时指定用户与组,即修改 ./configure 后面指定用户与组的参数
第二种:修改配置文件指定用户与组
③:为了方便掌握Nginx运行状态需要进行日志分割;通过编写脚本来实现。
④:设置防盗链,为了防止别人直接从你网站引用图片等链接,消耗了你的资源和网络流量

六、 nginx默认配置文件

在 nginx 的配置文件中,大概分为几个区域:events {}、http {}、和没有被 {}包裹的区域。而 http {}
中还有 server {},以及 server {} 中的 location {}。结构如下:
... 
worker_processes 1; 
events { 
worker_connections 1024; 
}

http {
... 
    server { 
         ... 
        location { 
              ... 
        } 
     }
    server { 
	... 
	} 
}

没有被 {} 包裹的部分为全局配置,如 worker_processes 1; 设置工作进程(子进程)数为 1
events {} 为 nginx 连接配置的模块,如 worker_connections 1024; 设置每一个子进程最大允许连
接 1024 个连接
http {} 为 nginx http 核心配置模块
server {} 为虚拟主机配置模块,包括监听端口、监听域名等
location {} URI 匹配

七、配置nginx防盗链

Nginx的防盗链原理是加入location项,用正则表达式过渡图片类型文件,对于信任的网址可以正常使用, 对于不信任的网址则返回相应的错误图片,在源主机(bt.com)的配置文件中加入以下代码:

vi /usr/local/nginx/conf/nginx.conf 
location ~*\.(jpg|gif|swf)$ { 
valid_referers none blocked *.test.com test.com; 
    if ($invalid_referer) { 
      rewrite ^/http://www.bt.com/error.png; 
    }
}

下面分析一下这段代码:
 ~*\.(jpg|gif|swf)$:这段正则表达式表示匹配不区分大小写,以.jpg或.gif或.swf结尾的文件。 valid_referers:设置信任的网站,可以正常使用图片。 none:浏览器中referer为空的情况,这就是直接在浏览器访问图片。 blocked:浏览器中referer不可空的情况,但是值被代理或防火墙删除了,这些值不以http://或 https://开头。 后面的网站或者域名:referer中包含相关字符串的网址。 if语句:如果链接的来源域名不在valid_referers所列出的列表中,$invalid_referer为1,则执行后 面的操作,即进行重写或返回403页面。 
 
 
 把图片error.png放到源主机(bt.com)的工作目录下。
 ls /usr/local/nginx/html 
 50x.html index.html logo.jpg error.png 
 这是重启服务器,重新访问http://www.test.com/index.html,显示的是被重写的图片。

八、lamp和lnmp有什么区别?

Nginx
Apache
MySQL:
--》 5.7 boost底层c++函数库
+10分钟编译时间

php在LAMP只是做为后台程序运行,pid支持他
php在LNMP开起了fpm模块fpm进程管理模块开启了php的pid功能,让php可以以9000端口的方式运行起来

Nginx--》开启了支持FastCGI的方式对接php(对接的端口是9000)

总结:

Nginx是我们生产中比较重要的生产工具,大家一定掌握,Nginx的优化方法常用,牢记!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Nginx是一个高性能的Web服务器和反向代理服务器,它具有占用资源少、处理请求快、支持高并发等优点,但是在大流量环境下,需要对Nginx进行优化,以提高性能和稳定性。 以下是一些Nginx优化的建议: 1. 调整worker_processes参数 worker_processes参数是Nginx的工作进程数,建议将其设置为CPU核心数的两倍。 例如,如果你的服务器有8个CPU核心,则可以将worker_processes设置为16。 2. 增加worker_connections参数 worker_connections参数表示每个工作进程可以同时处理的连接数,建议将其设置为1024或更高。 可以通过以下命令查看当前系统的最大连接数: ``` ulimit -n ``` 如果当前值较小,则需要增加该值: ``` ulimit -n 65535 ``` 3. 开启TCP Keepalive TCP Keepalive可以在连接空闲一段时间后,自动发送一个探测包,以保持连接的有效性。 可以通过以下命令开启TCP Keepalive: ``` tcp_nodelay on; tcp_nopush on; keepalive_timeout 60s; ``` 其中,keepalive_timeout表示空闲连接的超时时间。 4. 启用gzip压缩 启用gzip压缩可以减少传输数据量,提高网站的响应速度。 可以通过以下命令开启gzip压缩: ``` gzip on; gzip_min_length 1k; gzip_buffers 16 64k; gzip_http_version 1.1; gzip_comp_level 6; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; ``` 其中,gzip_types表示需要压缩的文件类型。 5. 限制请求速率 限制请求速率可以防止恶意攻击和DDoS攻击。 可以通过以下命令限制请求速率: ``` limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; ``` 其中,$binary_remote_addr表示客户端IP地址,zone表示限制区域,10m表示限制区域的内存大小,rate表示请求速率。 6. 缓存静态文件 缓存静态文件可以减少文件的读取次数,提高网站的响应速度。 可以通过以下命令缓存静态文件: ``` location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 1d; add_header Cache-Control "public"; } ``` 其中,expires表示文件的过期时间,add_header表示响应头信息。 以上是一些Nginx优化建议,需要根据实际情况进行调整和优化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值