nginx的优化和防盗链

nginx的优化和防盗链

nginx的优化,每一个点都是面试题。

一,隐藏版本号:

bug多。版本更新速度比较快,版本号如果泄露出去,会被别人攻击,

查看版本号的发送1:

nginx的优化和防盗链_第1张图片

2:F12 network中

如何隐藏:1在http全局模块中修改,不在server中也不是location(面试题回答一个即可)

nginx的优化和防盗链_第2张图片

2:修改源码文件,重新编译安装:

vim nginx.h 13行 14行

改了之后重新配置,编译安装 make &&make install

再打开隐藏版本号

基本在安装的第一步就给改了

二,nginx的日志分割:

nginx没有自带的日志分割功能,靠我们运维人员通过脚本实现日志分割。

在opt目录下建一个脚本

安装时间进行分割,每一天都生成一个新的日志。

面试题:问脚本怎么写

1 获取日期

找到nginx日志的存储位置

定义分割的源日志

定义nginx的pid文件

加保险,以防找不到

nginx的优化和防盗链_第3张图片

移动日志并重命名日志文件

发送信号给nginx主进程,让nginx重新生成一个新的日志文件

日志清理 日志清理原则:业务日志一般保留30天。数据库日志,保留两年。用户信息加密,而且要永久保存。高可用。

业务日志如果无重大事项,保留10天之内也可以,但是要申请批准。

赋权然后 指定定时任务

#!/bin/bash

d=$(date +%Y-%m-%d)

dir="/usr/local/nginx/logs"

logs_file='/usr/local/nginx/logs/access.log'

logs_error='/usr/local/nginx/logs/error.log'

pid_file='/usr/local/nginx/run/nginx.pid'

if [ ! -d "$dir" ]

then

mkdir -p $dir

fi

mv ${logs_file} ${dir}/access_${d}.log

mv ${logs_error} ${dir}/error_${d}.log

kill -USRL $(cat ${pid_file})

find $dir -mtime +30 -exec rm -rf {} \;

三,网页压缩

nginx:

http_gzip_static_module 可以对文件内容和图片进行压缩和

开启压缩功能

gzip_min_lenght 1k;

如果文件大小只有1k,不再进行压缩

gzip_comp_level 6;

压缩级别:压缩比率 1-9 1是速度快,压缩比最低 9压缩的速度最慢,但压缩比最高,一般都设置为6 默认是1

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;

一般这么多就足够了 加分号;

四,nginx的图片缓存时间

可以在日后访问时,不需要经常的向后台请求数据,加快访问速度

一般针对静态页面,动态页面一般不设置。

访问以上的结尾图片进行压缩

nginx的优化和防盗链_第4张图片

五,连接超时:

面试问会话保持问一般设置60到120(主要)

客户端向服务端发送一个完整的请求的超时时间

如果客户端在80秒内发送一个完整的请求头,那么nginx将会返回408 请求超时

客户端于服务端建立连接之后发送请求体的请求时间,80秒内客户端没有发送任何内容的话,nginx 408 request time out 一般来说设置10秒左右

六,nginx并发设置:

在高并发的场景下,需要nginx启动更多进程来保证快速响应。

cpu

根据cpu的核心数来调整nginx的进程数

查看cpu核数

生产中一般为系统cpu的一半一般来说4个就足够了,8个以上不会有性能的提升,反而会降低稳定性

nginx的优化和防盗链_第5张图片

修改两个

work_procersses 4;

worker_connections 15000;

数字相乘 单台服务器6万足够了

别忘了修改limits.conf

面试题:修改之后也要修改limits.conf

面试题:任何绑定cpu的命令,把进程绑定绑定到cpu上减少cpu的切换。提高效率。

写在全局配置里 设置绑定要和cpu数一致

七,面试题:TIME_WAIT大量出现,如何优化。

time_wait是tcp连接中的一种,不是报错,出现在四次挥手之后。

nginx的优化和防盗链_第6张图片

连接没有关闭,只是没有没有数据连接,tcp处于等待状态,等待有一个持续时间 http1.1会话保持。

1,确保可靠的关闭连接

2,避免连接复用。

他在连接正常关闭之后,一段时间之后,自动消失。而且占用的资源很少,对服务器性能影响有限。

就是让他快速消失 改内核文件

net.ipv4.tcp_syncookies = 1

#表示开SYN cookies

当出现SYN等待队列溢出时,启用cookies处理syn队列,默认是0 。1开启。

net.ipv4.tcp_tw_reuse = 1

#time_wait状态可以重用,一个连接就要占用一个端口,time_wait把所有的端口全部占满了,新的连接请求也不会拒绝。

net.ipv4.tcp_tw_recycle = 1

#让time_wait尽快回收。

net.ipv4.tcp_fin_timeout = 60

# 所有time_wait 最大的生命周期60秒。

八,nginx的内置变量:打印结果(工作中常用)

nginx的优化和防盗链_第7张图片

$remote_addr 客户端的ip地址

nginx的优化和防盗链_第8张图片

$remote_port 显示客户端的端口号

$uri:显示请求的uri

$host:显示请求的主机名

$request_method:显示请求的方法。

重量的变量配置:

proxy_set_header X-Forwarded-for $remote_addr

代理服务器设置这个变量,客户端的真实IP要发送给后端,否则代理服务器地址会被拉入黑名单。

proxy_set_header X-Real-IP $remote/-addr

客户端的真实ip,发送给后端,现在所有的网站都会要求客户端请求时,加上真实ip。

微信,微博,B站,都会显示ip地址。

九 防盗链:

防止其他网站盗用图片

nginx1:

nginx的优化和防盗链_第9张图片

nginx的优化和防盗链_第10张图片

valid_referers: 设置信任的网站

kgc.com www.kgc.com

*.kgc.com

none:允许没有http_refer的请求访问资源,请求url里面可以包refer

www.kgc.com/ls.jpg

www.kgc.com = www.kgc.com/ls.jpg

blocked :请求网站时,前面可以不带协议

www.baidu.com

if ( $invalid_referer ) {

rewrite ^/ http://www.kgc.com/error.png;

}

如果连接资源是来自上面valid-referers 定义的信任列表,$valid_referer变为true,执行重定向

rewrite ^/ http://www.kgc.com/error.png;

除了防盗链都会问

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