bug多。更新版本速度比较快,所以一旦版本号暴露出去,有可能给对方提供攻击的漏洞。
vim /usr/local/nginx/conf/nginx.conf
开server_tokens on;
关server_tokens off;
在http大模块中修改,不再server中,也不是location
cd 源码包路径/src/core/
vim nginx.h
13行 14行
重新编译安装:make && make install
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 {} \;
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
可以在日后访问时,不需要经常的向后台请求数据,加快访问速度
一般是针对静态页面
在vim /usr/local/nginx/conf/nginx.conf下
取消注释
gzip on;
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
在高并发的场景下,需要nginx启动更多的进程来保证快速响应
根据cpu的核心数,调整nginx的工作进程数。
worker_processes 1;
8个以上性能不会提升,可能会降低性能,性能稳定性下降
正常情况下 4个cpu 15000个并发量,并发量单台最多65535
worker_connections 1024;
还要修改/etc/security/limits.conf
把进程绑定cpu上,减少cpu之间的切换。提高效率
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秒。
1、$remote_addr 客户端的ip地址
2、$remote_port 显示客户端的端口号
3、$uri: 显示请求的uri nginx的家目录
4、$hosts:打印本机地址
5、$request_method:显示请求的方法
1.proxy_set_header X-Forwarded-for $remote addr
代理服务器会设置这个变量,客户端要发送给后端,否则代理服务器地址会被拉入黑名单。
2.proxy_set_header X-Real-IP $remote_addr
客户端的真是ip,发送给后端,现在所有的网站都会要求客户端请求时,加上真实ip
防止盗用本站的图片
(也就是:防止有人以www.kgc.com/ls.jpg的方式调用本站uri路径的图片)
vim /usr/local/nginx/conf/nginx.conf
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这个