nginx的优化和防盗链 2023/8/5 (笔记) 全部都是重点

nginx的优化和防盗链

重点就是优化:
1、隐藏版本号:
方法一:修改配置文件(修改配置文件前不要忘记备份)如下图

在http模块任意一个位置,加入一个命令:

server_tokens off;

方法二:在源码包里改
/opt/nginx-1.22.0/src/core/nginx.h
#define NGINX VERSION “1.1.1"        #引号里面修改版本号,可以修改服务名称

#define NGINX VER             "burun/" NGINX VERSION       #引号里面修改服务名称
要配置好之后,回到源码包主目录重新配置一下

 然后make -j 4 && make install安装即可如果之前置过server_tokens off;把off改为on然后重启服务即可

nginx日志分割:

因为nginx没有自动分割,需要动手已脚本的形式按天进行分割。

写完之后赋权然后./执行

nginx的页面压缩

节约带宽,提升用户的访问速度

首先在配置文件里取消注释

 改完配置文件别忘了重启服务

gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss image/jpg image/jpeg image/png image/gif application/x-httpd-php application/javascript application/json;

1.压缩的功能是默认自带的,可以不取消注释的,但是需要添加压缩细节,需要把gzip打开后,进行配置。

图片缓存:配置要写在server块里的location块里面

 改完重启nginx服务

连接超时:

http1.1会有一个自带的keepalive模式,告诉web服务器在处理完一个请求之后保持当前连接的tcp的状态为打开状态,如果当前连接有新的请求,服务端就会利用这个没有关闭的连接,继续给客户端响应,不需要再建立一个新的连接。

keepalive在一段时间之内保持打开状态,在这段时间之内还是会占用资源,占用过多会影响性能。

keepalive timeout 65;tcp连接最多可以保持65秒。如果设置为0就是禁用keepalive功能。

长连接;

client header_timeout 60;

客户端向服务端发送请求,会有一个request_header的超时时间,如果客户端没有在60秒内发送一个完整的请求头,nginx会返回

408 request time out

client_body_timeout 60;

客户端没有向服务器在60秒发送一个完整请求体,nginx 408 request time out

客户端向服务端发起请求,会有一个request_header的超时时间。如果客户端没有在60秒内发送一个完整的请求体,nginx 408 request time out

 

★★★★★nginx的并发设置:★★★★★★

在高并发场景中,需要启动更多的nginx进程以保证响应速度。可以更快的处理用户的请求,避免堵塞。 

1、查看cpu核心数:cat /proc/cpuinfo | grep processor | wc -l 

2、也可以更改配置文件

更改完配置文件要重启服务

3、/worker cpu_affinity设置work进程绑定到指定的cpu的命令。可以减少cpu切换带来的开销,确保worker进程在一个独立的cpu核心上运行。

(0001)代表1       (0010)代表2     (0100)代表3     (1000)代表4 

是以十进制数来代表数量

/worker cpu_affinity设置一般为4,访问量不大,1也足够了

如果要扩展:最多到8 16个

8个以上的workr进程就不会再提高性能了,反而会降低性能。8个足够了

/worker cpu_affinity单个worker进程可以不绑定cpu

TIME_WAIT:

不是一个报错信息,是tcp连接状态中的一种状态。出现在tcp连接的四次挥手中。

当链接的乙方发送fin报文,而且收到了对方的ack报文之后,就会进入time_wait

tcp处理等待的状态,是有一个持续时间,65秒,确保网络中的所有数据包都会被完全处理完毕。

有两个作用:

1、确保可靠的关闭连接。如果立刻关闭连接,旧的数据包也会被处理,从而干扰新的连接。

2、避免连接复用,time_wait的时间太短,可能会导致旧的连接仍然在网络中,误认为是新连接,导致连接复用。

而且在连接的生命周期当中,time_wait占用的资源是非常小的,而且对服务器整体性能的影响也很有限。

大量的短链接频繁创建和销毁或者大并发连接时(负载均衡),time_wait的连接会积累,服务器会出现大量的time_wait状态的连接,在这种情况下需要优化处理。

要靠内核设置,进行优化。

查看系统所有tcp连接的状态:

系统连接状态: 

closed 表示连接未活动或者关闭

★listen 监听,等待连接

syn_recv: syn接收,服务端收到了来自客户端的syn(连接请求),正在等待确认

syn_sent:syn发送,客户端已经向服务器发送了syn请求,等待服务器确认

★ESTABLISHED:已经建立了tcp连接,正在传送数据

fin_wait1:表示一端已经发送了连接关闭的请求,等待另一端确认

fin wait2: 表示另端已经确认了,等待发出端,确认关闭请求

close _wait:  表示一端已经关闭连接,但是应用程序还未关闭连接

closing:正在关闭

★time wait: 连接等待。

last_ack:表示应用程序已经发送了最后的确认,等待另一端进入closed状态

内核文件

在最后一行加入 

配置完之后 

 立即生效

打开nginx配置文件

在server块下的location块添加

 valid_referes设置信任的网站,*.kgc.com  kgc.com都可以访问图片

none表示允许没有http_refer的请求访问资源

原来要www.kgc.com/ls.jpg

现在www.kgc.com也可以访问图片。也就是说www.kgc.com可以直接访问www.kgc.com/ls.jpg

blocked: 允许不是http://开头的请求,可以不带协议请求访问资源。

*.kgc.com 只允许域名是kgc的才可以请求资源。

$invalid_referer: 只要不是valid _referers设置信任的网站,统统为true

配置完之后重启服务

然后进入html把error图片拖进去

 然后做一下页面准备

 进入配置文件删除所有内容

 

配置防盗链

 然后启动另一台安装nginx的虚拟机上

 然后删除全部内容添加

这时访问的就是盗链图片了 

不过真实不会出现图片盗链而会显示403

 总结

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值