nginx的优化和防盗链

nginx的优化和防盗链

重点是优化

一:隐藏版本号

到http模块当中,添加server_tokens off

到源码包里面(cd /src/core) nginx.h的文件打开

NGINX_VER上下两行,修改完毕,然后编译安装

二:nginx的日志分割

nginx不自带日志分割工具,需要手动以脚本的形式来进行分割创建nginx.sh(脚本)内容进行编写

三:nginx的页面压缩

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

1、压缩功能是默认自带的,可以不取消注释的

但是需要添加压缩细节,需要吧gzip内部打开后,再进行配置

location ~* \.(gif/jpg/swf/jepg/ico)

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

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

keepalive timeout 65;tcp连接最多只能保持65s

设置为0,就是禁用了keepalive功能,质押请求完成,会立刻关闭tcp连接

———————————————————————————————————————————

nginx的并发设置:

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

cat  /proc/cpuinfo | grep processor | wc -l

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

生产中的worker一般设置为4,访问量不大的,设置1也足够了

如果要扩展,最多也是8,16个

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

time_wait:

不是一个报错信息,是tcp连接状态中的一种状态。出现在tcp连接的四次挥手当中,当连接的乙方发送fin报文的时候,而且收到了对方的ack报文之后,就会进入time_wait

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

有两个作用:

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

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

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

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

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

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

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

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

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

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

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

close_wait:表示一端已经关闭俩基恩,但是应用程序还未关闭连接

closing:正在关闭

time_wait:连接等待

last_ack:表示应用程序已经发送了最后的确认

net.ipv4.tcp_syncookies=1

表示开启syn cookies,当出现SYN队列溢出,启用cookie处理请求

net.ipv4.tcp_tw_reuse=1

表示TIME_WAIT状态的连接可以复用,即使time_wait把本地端口全部占满,也不会拒绝新的请求

net.ipv4.tcp_tw_recycle=1

让time_wait尽快回收

net.ipv4.tcp_fin_timeout=60

你可能感兴趣的:(nginx,运维)