nginx页面优化

一. nginx优化

1、影藏版本号

server tokens off;

2、nginx日志分割

脚本

#!/bin/bash
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重新生成acces.log和error.log


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

3、nginx的页面压缩

对文件进行压缩的功能,节约带宽,提高访问速度
http_gzip_module(必须有这个模块)

vim /usr/local/nginx/conf/nginx.conf
gzip  on;
#将off改为on开启nginx的页面压缩模块
gzip_min_length 1k;
#最小压缩文件(大于1k以上的文件才会进行压缩)
gzip_buffers 4 64k;
#设置压缩的一个缓冲区,把缓冲区分为4个,每个缓冲的大小64k
gzip_comp_level 6;
#压缩的等级1-9,既保证了压缩也兼顾了速度
gzip_vary on;
#前端的缓存服务器存储压缩的页面
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;
#支持压缩的文件类型,如果写明表示有上述文件会进行压缩

图片缓存

location ~* \.(gif|jpg|jpeg)$ {
        root html;
       expires ld;
#正则匹配的方式,表示访问己.gif .jpg .jpeg为结尾的文件,缓存1天
}

4、keepalive_timeout

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

会话保持

我们和服务端建立连接之后,在一定时间保持登录或者固定的状态,保证在浏览时,数据一致。
连接保持是关于连接的控制
会话保持是关于交互的控制

client_header_timeout 80;
#客户端向服务端发送一个完整请求头的超时时间。请求头超时nginx返回408

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

5、nginx的并发处理

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

  2. worker_cpu_affinity 01 10 100 1000;
    #将nginx的进程绑定到cpu的核心,防止cpu之间的切换,提高性能。

查看CPU

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

6、timewait的回收机制

timewait是tcp连接当中的一种正常状态,http1.1版本多了一个连接保持。
timewait状态下,tcp连接处于等待接待,等待一个持续的时间,确保双方的数据尽可能的传输完毕。

两个目的

  1. 确保连接时被可靠的关闭:即便是四次挥手之后,对方有可能还有数据未处理完毕,在timewait阶段可以保证数据依然被正确的处理,防止旧的数据包影响其他新的连接
  2. 避免出现连接复用的问题:如果timewait不存在,或者时间较短,旧的连接可能依然处于网络之中,有可能被认为新的连接

当服务器上同时有大量的短连接频繁的创建和销毁,或者处理大量并发连接时,time_wait就会出现堆积。
如果堆积的数量的太多,需要系统能够尽快的把time_wait回收。

vim /etc/sysctl.conf    #sysctl.conf修改内科配置的文件
结尾添加
net.ipv4.tcp_syncookies=1
#表示开启SYN cookies,当syn等待连接队列溢出,启用cookies来进行处理
net.ipv4.tcp_tw_reuse=1
#让time wait状态的连接可以重用,time wait状态的连接占用了所有端口,
也不会拒绝新的请求
net.ipv4.tcp_fin_timeout=65
#保持在fin-wait-2状态的时间。表示套接字文件由本端要求关闭,这个参数决定了关闭的间隔
#net.ipv4.tcp_tw_recycle=1
#让time_wait尽快回收,ubuntu内核不支持这个配置,centos支持

sysctl -p   #重新加载 /etc/sysctl.conf 文件中的内核参数设置
  • fin-wait-1:终止等待1,表示应用程序已经发送了连接关闭的请求,正在等待另一端的确认
  • fin-wait-2:表示另一端已经确认连接关闭的请求,正在等待另一端发送连接关闭的请求

#查看timewait连接

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

二. 配置防盗链

防止别的用户通过链接的方式盗用网站的图片
1. Ubuntu1

location ~* \.(gif|jpg|jpeg)$ {
                root html;
                expires 1d;
                valid_referers none blocked *.lx.com lx.com;
                if ( $invalid_referer ) {
                        rewrite ^/ http://www.lx.com/error.png;
                        #return 403;
                        #不使用图片直接403
                }
        }
  • valid referers:设置信任的网站可以正常的使用图片
  • none:允许没有http_rpfer的请求,
  • www.lx.com/ls.jpg=www.lx.com
  • blocked:允许不是http:// 开头的请求http://wviw.baudu.com=www.baidu.com
  • if语句
    $invalid referer:不是信任的网站的地址,就是认为是真,true,为真执行rewrite就是重写,重定向访问:http://www.lx/com/error.png
root@u3:/usr/local/nginx/html# ls
50x.html  error.png  index.html  ls.jpg

vim /usr/local/nginx/html/index.html
<img src="ls.jpg"/>
</body>
</html>

vim /etc/hosts
#添加
192.168.246.6 www.lx.com
192.168.246.7 www.lx1.com

2. Ubuntu2

vim /usr/local/nginx/html/index.html
<img src="http://www.xy104.com/ls.jpg"/>
</body>
</html>

vim /etc/hosts
#添加
192.168.246.6 www.lx.com
192.168.246.7 www.lx1.com

在这里插入图片描述
在这里插入图片描述

三. location匹配的规则和优先级

location匹配的分类

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

  1. 精确匹配 location = / {…}
    =:完全相同,一个字错都匹配不到
  2. 正则匹配 location ~ / {…}
    ^- 表示普通字符的前缀匹配,如果匹配成功,不再匹配其他的location
    ~ 区分大小写的字符匹配
    ~* 不区分大小写进行匹配
    !~ 区分大小写,匹配的取非
    !~* 不区分大小写,匹配取非
  3. 一般匹配 location /

2、location匹配的优先级

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

精确匹配 > 正则匹配 > 一般匹配

3、网站配置location的规则

  1. location = / { }
    直接匹配网站的根目录,也就是网站的首页。首页一般都是一个静态的页面,直接匹配可以提高访问速度

  2. 处理静态文件的请求,通过前缀或者是后缀进行配的规则
    location ^~ /static { }
    location ~* .{jsp | gif | html}$ { }

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值