nginx优化

nginx优化配置 匹配类型优先级顺序说明最高精确匹配次高前缀匹配(阻止后续正则匹配)中正则匹配(区分大小写,按顺序执行)中正则匹配(不区分大小写,按顺序执行)低普通前缀匹配location /最低默认匹配。 阅读详情

nginx优化

1 隐藏版本号

访问网页可以按F12查看网络栏中的服务应用及版本号的信息,而nginx每个版本都有相对的漏洞,如果暴露服务应用和版本号会有被攻击的风险,所以需要隐藏版本号。

在这里插入图片描述

1.1 方法一

vim /usr/local/nginx/conf/nginx.conf
server_tokens off;
# server_tokens off; 通用方法编译,apt yum都可以使用
# 只是隐藏版本,服务名称还在

1.2 方法二:修改源码文件(仅限于编译安装)

vim /opt/nginx-1.22.0/src/core/nginx.h
# 修改完后重新编译安装
vim /usr/local/nginx/conf/nginx.conf
	server_tokens on;	# 在配置文件中添加
systemctl restart nginx

在这里插入图片描述

2 nginx日志分割(shell脚本)

d=$(date +%Y-%m-%d)
# 直接获取当前的日期

dir="/usr/local/nginx/logs"
# 获取日志目录所在的位置

logs_access='/usr/local/nginx/logs/access.log'
logs_error='/usr/local/nginx/logs/error.log'
# 定义需要分割的日志分件

pid_file='/usr/local/nginx/run/nginx.pid'
# 定义pid分件的位置

if [ ! -d "$dir" ]
then
    mkdir -p $dir
fi

mv ${logs_access} ${dir}/access_${d}.log
# mv /usr/local/nginx/logs/access.log /usr/local/nginx/logs/access_2024-12-09.log

mv ${logs_error} ${dir}/error_${d}.log
# mv /usr/local/nginx/logs/error.log /usr/local/nginx/logs/error_2024-12-09.log

kill -USR1 $(cat ${pid_file})
# -USR1,通过发送USR1这个信号,给nginx的主进程,让nginx重新生成access.log和error.log

# 日志清理,清理30天以前的日志
find $dir -mtime +30 -exec rm -rf {} \;

3 nginx的页面压缩

作用:对文件进行压缩的功能,节约带宽,提高访问速度

条件:nginx需要配置http_gzip_module模块

在这里插入图片描述

在这里插入图片描述

4 keepalive_timeout

http1.1之后特有的模式,keepalive模式,主流的前端软件都支持keepalive。

连接保持:数据传送完毕之后,连接不是立刻断开。而是一段时间之内保持连接,无需再进行三次握手。如果需要传输数据,可以继续使用这个连接。连接保持的时间不宜太长,一般在60-180秒,keepalive的连接保持时间太长,会占用过多的系统资源,影响性能。

会话保持:和服务端建立连接之后,在一定时间保持登录或者固定的状态,保证在浏览时,数据一致。

区别

  • 连接保持是关于连接的控制,主要是为了减少频繁建立和关闭连接的开销,提高通信效率。

  • 会话保持是关于交互的控制,主要是为了确保客户端与服务器之间的交互过程能够连续进行。

    • client_header_timeout 80;

      客户端向服务端发送一个完整请求头的超时时间,nginx就返回408

    • client_body_timeout 80;

      客户端和服务端建立连接之后,没有在规定时间内发送一个完整的请求体,或者没有请求任何内容,nginx也会返回408

5 nginx的并发处理

vim /usr/local/nginx/conf/nginx.conf

worker_processes 4;
# 修改为内核数量的2倍或者一致。一般设置4个 不能超过8个,超过8个性能反而会降低。

worker_cpu_affinity 0001 0010 0100 1000;
或
worker_cpu_affinity 1 10 100 1000;
# 将nginx的进程绑定到cpu的核心,防止cpu之间的切换,提高性能。
cat /proc/cpuinfo
或
top 按1键
# 查看cpu个数

worker_connections  1024;
# 并发处理数 = worker_processes * worker_connections
# 仅修改这两项设置无效,因为受到系统资源配置的限制

vim /etc/security/limits.conf
# /etc/security/limits.conf:系统资源限制配置文件
#在文件最后添加以下内容,修改资源配置上限
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
#*表示任意程序,nproc: 系统处理的进程数 nofile: 同时打开文件的数量,最大就是65535,必须重启服务器生效

ulimit -n 65535

在这里插入图片描述

6 timewait回收机制

timewait是tcp连接当中的一种正常状态。在timewait状态下,tcp连接处于等待阶段,等待一个持续的时间,确保双方的数据尽可能的传输完毕。

timewait的两个目的:

1、确保连接时被可靠的关闭,即便是四次挥手之后,对方有可能还有数据未处理完毕,在timewait阶段可以保证数据依然被正确的处理,防止旧的数据包影响其他新的连接。

2、避免出现连接复用的问题:如果timewait不存在,或者时间较短,旧的连接可能依然处于网络之中,有可能被认为新的连接。

当服务器上同时有大量的短连接频繁的创建和销毁,或者处理大量并发连接时,time_wait就会出现堆积。

如果堆积的数量太多,需要系统能够尽快地把timewait回收。

vim /etc/sysctl.conf
# /etc/sysctl.conf:修改内核配置的文件

sysctl -p
# 修改完配置文件,刷新命令

在这里插入图片描述

  • net.ipv4.tcp_tw_recycle=1(已经被淘汰)

    原因:在NAT(地址转换)环境中,会加速系统收回timewait,在nat环境中,源地址会发生变化,他总是基于源ip地址进行识别,多个客户端使用一个相同的外部ip地址时,连接混淆的情况,导致客户端无法正确连接。

  • fin-wait-1:终止等待1,表示应用程序已经发送了连接关闭的请求,正在等待另一端的确认

  • fin-wait-2:终止等待2,表示已收到另一端已经确认连接关闭的响应,正在等待另一端发送连接关闭的请求

7 配置防盗链

作用:防止别的用户通过链接的方式盗用网站的图片

vim /usr/local/nginx/conf/nginx.conf

location / {
    root   html;
    index  index.html index.htm;
}

location ~* \.(jpg|gif|swf)$ {
    root   html;
	valid_referers none blocked *.kc02.com kc02.com;
	if ($invalid_referer) {
   	 	rewrite ^/ http://www.kc02.com/error.png;
    	# 通常直接写 return 403;
}

systemctl restart nginx.service

在这里插入图片描述

  • valid_referers:设置信任的网站可以正常的使用图片
  • none:允许没有http_refer的请求,例如 www.xy104.com/s.jpg = www.xy104.com
  • blocked:允许不是http://开头的请求,例如 http://www.baidu.com 和 www.baidu.com
  • if ($invalid_referer):不是信任的网站的地址,就是认为是真,执行rewrite重定向访问:http://www.xy104/com/error.png
vim /etc/hosts
# 两台服务器都修改
192.168.159.200 www.kc01.com
192.168.159.220 www.kc03.com

在这里插入图片描述

vim /usr/local/nginx/html/index.html
# 源服务器作如下修改
<html>               
<body>
<img src="ctrl.jpg"/>
</body>
</html>

vim /usr/local/nginx/html/index.html
# 盗图服务器作如下修改
<html>               
<body>
<img src="www.kc03.com/ctrl.jpg"/>
</body>
</html>

8 location匹配的规则和优先级

8.1 location匹配的分类

多个location一旦匹配其中之一,不再匹配其他location

  • 精确匹配 location = / {...}

    = :完全相同,一个字错都匹配不到

  • 正则匹配 location ~ / {...}

    • ^~ :表示普通字符的前缀匹配,如果匹配成功,不再匹配其他的location
    • ~ :区分大小写的字符匹配
    • ~* :不区分大小写进行匹配
    • !~ :区分大小写,匹配取非
    • !~* :不区分大小写,匹配取非
  • 一般匹配 location /

8.2 location匹配的优先级

location = > location ^~ > location ~* > location /test1 > location /

8.3 网站配置location的规则怎么做

1、精确匹配网站的根目录,也就是网站的首页。首页一般都是一个静态的页面,精确匹配可以提高访问速度

location = /

2、处理静态文件的请求,通过前缀或者是后缀进行配的规则

location ^~ /static {}
location ~* .(jsp|gif|png|jsp|html|php)$ {}

3、通用匹配:一般用来转发包含.php或者.jsp为结尾的动态请求

location /
proxy_pass http://
如何进行Nginx网页的优化 目录前言:1、配置Nginx隐藏版本号2、修改配置文件法3、配置Nginx网页缓存时间4、实现Nginx的日志切割5、配置Nginx实现连接超时6、更改Nginx运行进程数7、配置Nginx实现网页压缩功能8、配置Nginx实现防盗链9、对FPM模块进行参数优化一、Nginx隐藏版本号实验方法一:关闭防火墙核心防护,进入配置文件,修改相关参数2、重启服务,curl -I检测方法二:1、进入配置文件,修改相关参数2、进入源文件,修改相关参数3、重新编译安装二、配置Nginx网页缓存时间实验1、进入配置文件,修 阅读详情

相关推荐

Nginx 优化实战

Nginx优化 nginx介绍 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engineX”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器.Nginx是由俄罗斯人IgorSysoev为俄罗斯访问量第二的Rambler.ru站点开发. Nginx以事件驱动(epoll)的方式编写,所以有非常好的性能,同...

yonggeit的博客 4254

Nginx服务优化的各种方法

文章目录实验环境一、隐藏软件版本号1.1 修改配置文件1.2 修改源码二、更改程序运行用户与组2.1 编译安装时指定用户和组2.2 修改配置文件指定用户和组三、配置网页缓存时间四、Nginx日志切割五、设置连接超时六、更改进程数七、网页压缩八、配置防盗链九、fpm参数优化9.1 FPM模块概述9.2 FPM优化参数讲解9.3 FPM参数优化 在使用Nginx作为web站点中我们可以通过对Nginx优化,来实现相关的各种功能,比如: 隐藏软件版本号 更改程序运行用户与组 配置网页缓存时间 Nginx日志切割

weixin_47153988的博客 2581

Nginx优化

nginx调优!

JinLu_的博客 6704

nginx的一些优化

nginx优化一、自定义报错页面?二、优化Nginx并发量三、优化Nginx服务的安全配置1, 修改版本信息,并隐藏具体的版本号2, 拒绝非法的请求四、编写日志切割脚本五、Nginx的一些模块 一、自定义报错页面? 优化前,客户端使用浏览器访问不存在的页面,会提示404文件未找到 操作步骤: 1,vim打开配置文件,修改error_page行 [root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf 47 error_page 404

ring__wang的博客 2862

nginx网页优化

文章目录一、nginx服务优化1.1 配置Nginx隐藏版本号作用方法1.2 修改Nginx用户与组1.3 配置Nginx网页缓存时间网页缓存设置作用网页缓存设置方法二、nginx深入优化2.1 Nginx的日志切割日志分割的概述日志分割的方法2.2 配置Nginx实现连接超时超时参数设置方式2.3 更改Nginx运行进程数更改进程数的概述更改进程数的配置方法:2.4 配置Nginx实现网页压缩功能压缩功能参数压缩配置2.5 配置Nginx实现防盗链案例配置说明配置文件2.6 对FPM模块进行参数优化意义F

weixin_50344820的博客 868

关于nginx网站优化方面的总结

nginx优化一、编译安装前的优化二、编译安装NGINX三、NGINX配置项优化四、Linux系统参数优化 一、编译安装前的优化 1.NGINX简介 NGINX以事件驱动(epoll)的方式编写,有着非常好的性能,同时也是一个非常高效的反向代理、负载平衡。但是NGINX并不支持CGI方式运行,原因是可以减少带来的一些程序上的漏洞。所以必须使用FastCGI方式来执行PHP程序。 由于NGINX本身的一些优点,轻量,开源,易用,越来越多的公司使用nginx作为web应用服务器。 2.NGINX优化 (1)编译

weixin_47019016的博客 434

Nginx服务优化

文章目录1 Nginx基本安全优化1.1 隐藏nginx版本号1.2 更改源码隐藏Nginx软件名及版本号1.3 更改程序用户2 根据参数,优化nginx服务性能2.1 优化worker进程数2.2 绑定不同worker进程到不同CPU2.3 nginx事件处理模型优化2.4 调整单worker进程允许的客户端最大连接数2.5 配置work进程最大文件打开数2.6 开启高效文件传输模式2.7 优...

jc的博客 461

Nginx——Nginx优化方案设计

它提供了真正的多路复用和并发,更好的报头压缩(二进制编码),更好的优先级,更好的流控制机制以及称为服务器推送的新交互模式,该模式使服务器能够将响应推送到客户端。一般情况下都是不存在ssl模块的,接下来进入到你的解压缩后的nginx目录,注意这里不是nginx安装目录,是解压缩后的目录,我的是在(/root/nginx),进入目录后,输入。本博文介绍Nginx优化的设计方向,同时介绍优化的原理,帮助大家在nginx的使用和优化中提供一个参考的方法,让你的nginx发挥最大性能,节约系统资源。

庄小焱 2470

nginx以及nginx优化

1.静态文件服务:静态页面,可以直接提供静态文件服务(html ,css,jsp)处理静态页面的响应速度很快,效率很好2.代理:正向代理、反向代理。可以实现负载均衡,高可用和故障转移3.动态内容处理,nginx并不能直接处理动态请求,可以通过中间件(php/tomcat)把动态请求转发给后端服务器4.支持加密https5.可以实现重定向6.虚拟主机,一个nginx可以配置多个域名和站点7.nginx自带缓存8.性能可拓展,处理能力可以随时调整nginx的应用场景:1.静态页面。

Hai990218的博客 1070
上一篇: LNMP和Discuz论坛
下一篇: location重定向和nginx代理
云计算练习生X
博客等级 码龄3年 1334粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值