nginx.2——优化和防盗链

1、隐藏版本号

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

方法一

vim /usr/local/nginx/conf/nginx.conf
开server_tokens on;

server_tokens off;

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

方法二

cd 源码包路径/src/core/
vim nginx.h

nginx.2——优化和防盗链_第1张图片
13行 14行
重新编译安装:make && make install

2、nginx日志分割


nginx 没有自带的日志分割功能,靠脚本实现

按照时间分割,每天一个日期

#!/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 {} \;

3、网页压缩

nginx:

http_gzip_static_module 可以对文件内容和图片进行压缩的功能,节约宽带

vim /usr/local/nginx/conf/nginx.conf

1、取消注释
gzip on;

2、如果文件的大小是1k,不再进行压缩处理
gzip_min_length 1k;

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

4、gzip_vary on;
前端的缓存也可以支持压缩

5、gzip_types text/plain image/gif image/jpg;

支持的文件
可添加: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.2——优化和防盗链_第2张图片

4、nginx的图片缓存时间

可以在日后访问时,不需要经常的向后台请求数据,加快访问速度
一般是针对静态页面

在vim /usr/local/nginx/conf/nginx.conf下
取消注释
gzip on;

nginx.2——优化和防盗链_第3张图片

5、连接超时

vim /usr/local/nginx/conf/nginx.conf
keepalive_timeout  65;
会话保持时间正常情况下60--120s

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

client_body_timeout 80;
客户端于服务端建立连接之后发送request body的超时时间
80秒内,客户端没有发送任何内容,nginx 408 request time out

6、nginx的并发设置

在高并发的场景下,需要nginx启动更多的进程来保证快速响应
根据cpu的核心数,调整nginx的工作进程数。

worker_processes  1;
8个以上性能不会提升,可能会降低性能,性能稳定性下降
正常情况下 4个cpu 15000个并发量,并发量单台最多65535
worker_connections  1024;

还要修改/etc/security/limits.conf

nginx.2——优化和防盗链_第4张图片

把进程绑定cpu上,减少cpu之间的切换。提高效率

nginx.2——优化和防盗链_第5张图片

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

time_wait 是tcp连接状态中的一种,不是报错!出现四次挥手之后。
在time wait状态下,tpc处于连接等待状态,等待有一个持续时间 http1.1会话保持。
        1、确保可靠的关闭连接         

        2、避免连接复用
进入time_wait之后,一短时间之后,会自动消失。且占用用资源小,对服务性能的影响有限。

vim /etc/sysctl.conf 内核配置文件

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秒。 

7、nginx的内置变量:打印结果

1、$remote_addr 客户端的ip地址

2、$remote_port 显示客户端的端口号

3、$uri: 显示请求的uri nginx的家目录

4、$hosts:打印本机地址

5、$request_method:显示请求的方法

nginx.2——优化和防盗链_第6张图片

nginx.2——优化和防盗链_第7张图片

重要的变量

1.proxy_set_header X-Forwarded-for $remote addr
代理服务器会设置这个变量,客户端要发送给后端,否则代理服务器地址会被拉入黑名单。
2.proxy_set_header X-Real-IP $remote_addr
客户端的真是ip,发送给后端,现在所有的网站都会要求客户端请求时,加上真实ip

 

8、防盗链:

防止盗用本站的图片

(也就是:防止有人以www.kgc.com/ls.jpg的方式调用本站uri路径的图片)
vim /usr/local/nginx/conf/nginx.conf

nginx.2——优化和防盗链_第8张图片

valid_referers :设置信任的网站
kgc.com www.kgc.com
*.kgc.com
none: 允许没有http_refer的请求访问资源,请求url里面可以不包含refer,不带uri
说明:
如果要访问www.kgc.com/ls.jpg
访问www.kgc.com接等于要访问www.kgc.com/ls.jpg

blocked:请求网站时,前面可以不带协议
http://www.baidu.com/
可以不写http协议,可以直接写www.baidu.com/

if语句
如果连接资源不是来自上面valid——referers 定义的信任列表,svalid referer变为true,执行重定向rewrite ^/ http://www.kgc.com/error.png;
也就是说只有kgc.com可以访问www.kgc.com/ls.jpg;如果不是kgc.com访问,$invalid_referer就会是true,执行http://www.kgc.com/error.png这个

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