nginx的优化和防盗链

nginx的优化和防盗链

nginx的优化

1、隐藏版本号:

bug多。更新版本速度比较快,所以一旦版本号暴露出去,有可能给对方提供攻击的漏洞

curl -I(大写i) 192.168.233.30

在http大模块中修改,不在server中,也不是location

(1)第一种方式:在配置文件nginx.conf中修改的命令是加上一行:server_tokens off

(2)第二种方式:修改源码文件,重新编译安装:

在源码包里面修改配置文件;修改完之后要重新配置,编译和安装;隐藏版本号打开

2、nginx的日志分割:

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

在opt里创建一个文件(vim nginxlog.sh

#!/bin/bash

#按照时间来进行分割,每天都生成一个新的日志

#获取日期

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

#找到nginx日志的存储位置

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

#定义分割的源日志

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

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

#定义nginx的PID文件

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

if [ ! -d "$dir" ]

then

mkdir -p $dir

fi

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

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

#mv /usr/local/nginx/logs/access.log /usr/local/nginx/logs/access_2023-10-12.log

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

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

kill -USR1 $(cat ${pid_file})

#USR1 生成一个新的日志 cat /usr/local/nginx/run/nginx.pid

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

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

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

还需要赋权chmod 777,以及crontab -e -u root指定root来执行定时任务***** /opt/nginxlog.sh

3、网页压缩:

nginx:

http_gzip_static_module:可以对文件内容和图片进行压缩的功能,节约宽带,提升用户的访问速度

(1) cd /usr/local/nginx/conf/

(2) cp nginx.conf nginx.conf.bak.2003.10.12

(3) vim nginx.conf

找到gzip on,然后取消注释

gzip on:开启压缩功能

gzip_min_lenght 1k:如果文件的大小是1k,不再进行压缩处理

gzip_comp_level 6:压缩级别:压缩比率 1-9 1是速度快,压缩比最低,9压缩的速度最慢,但是压缩比最高,默认是1

gzip_comp on:前端的缓存也可以支持压缩

支持压缩的所有类型 :gzip_types text/plain image/jpg 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;

4、nginx的图片缓存时间

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

一般是针对静态页面,动态不设置缓存时间

(1) cd /usr/local/nginx/conf/

(2) vim nginx.conf

在location后面再添加一个:

location ~* \.(gif|jpg|jepg|bmp|ico)$ {

root html;

expires 1d;

}

(3)systemctl restart nginx

5、连接超时:

keepalive_timeout 60 - 120

(1) cd /usr/local/nginx/conf/

(2) vim nginx.conf

找到 #keepalive_timeout 0;

在后面添加两行

keepalive_timeout 60;

client_header_timeout 80;

#客户端向服务端发送一个完整request header的超时间,如果客户端在80秒内没有发送一个完整的请求头,nginx将会返回408,request time out

6、nginx并发设置:

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

cpu

根据cpu的核心数,可以调整nginx的工作进程数

查看cpu核数的命令:

(1)cat /proc/cpuinfo | grep -c processor

(2)cat /proc/cpuinfo | grep processor | wc -l

面试题:

work_procersses 4;

worker_connerctions 15000;

60000个

别忘了修改limits.conf

8个以上性能降低;

面试题:

TIME_WAITD大量出现,该如何优化?

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

在time_wait状态下,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的内置变量:打印结果

$remote_addr:显示客户端的ip地址

$remote_port:显示客户端的端口号

$uri:显示请求的uri

$host:显示请求的主机名

$request_method:显示请求的方法

重要的变量:

proxy_set_header X-Forwarded-for $remote_addr

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

proxy_set_header X-Real-IP $remote_addr

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

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

防盗链:

防止其他网站盗用本站的图片

valid_referers:设置信任的网站

kgc.com www.kgc.com

*.kgc.com

nine:允许没有http_refer的请求访问资源,请求url里面可以不包含refer可以不带uri

www.kgc.com/ls.jpg

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

blocked:请求网站时,前面可以不带协议(也就是类似于http)

if( $invalid_referer ) {

rewrite ^/ http://www.kgc.com/errer.png

}

如果连接资源是来自于上面

默写:

1、nginx有哪些优化,简述配置过程

(1)隐藏版本号

http模块的全局配置:server_tokens off

改源码文件

2、日志分割

3、页面压缩

gzip on;取消注释

4、缓存时间

worker_process 4

worker_cpu_affinity 0001 0010 0100 1000

worker_connection 15000;

4*15000=60000

limits.conf 656534

5、压缩图片

expires 1d;

time_wait

小的业务,不需要关注

相关推荐
a26637896几秒前
解决yum命令报错“Could not resolve host: mirrorlist.centos.org
linux·运维·centos
上海文顺负载箱13 分钟前
如何评估焊机测试负载均衡性能
运维·负载均衡
铁锤妹妹头发多1 小时前
新手用docker真**难受
运维·docker·容器
超栈1 小时前
HCIP(11)-期中综合实验(BGP、Peer、OSPF、VLAN、IP、Route-Policy)
运维·网络·网络协议·计算机网络·web安全·网络安全·信息与通信
Cachel wood1 小时前
Github配置ssh key原理及操作步骤
运维·开发语言·数据库·windows·postgresql·ssh·github
编程一生1 小时前
回调数据丢了?
运维·服务器·前端
华为云PaaS服务小智2 小时前
华为大咖说 | 浅谈智能运维技术
运维·华为·华为云
zhd15306915625ff4 小时前
化工厂主要涉及的自动化备件有哪些?
运维·自动化·化工厂
Jason-河山4 小时前
利用API返回值实现商品信息自动化更新:技术与实践
运维·自动化
wowocpp5 小时前
查看 linux ubuntu 分区 和 挂载 情况 lsblk
linux·运维·ubuntu