1.worker_processes 与worker_connections并发配置
worker_processes默认1,一般配置CPU核心数
work_connections默认1024(每个work_processes最大连接数)
总并发= worker_processes* worker_connections
2.gzip压缩(http模块配置),一般是1k以上的js,css,xml等开启压缩,图片视频不要开启压缩,否则浪费cpu还不能节省带宽。
gzip on;#开关
gzip_vary on; #响应头增加Var压缩标记,便于浏览器查看该资源是否被压缩过
gzip_min_length 1k; #至少1k才压缩
gzip_buffers 4 16k; #一次4*16k单位申请内存
gzip_comp_level 9; #最高级别压缩,但是较耗用资源,视频图片最好不压缩。压缩率太低
gzip_types text/plain application/x-javascript application/javascript text/css application/xml text/javascript application/x-httpd-php
Vue前端gzip压缩案例:webpack打包虽然去除了js,css等的代码空格等,但仍然有较大的压缩价值
gzip开启前
gzip开启后(Ctrl+F5重新加载)
3.Nginx缓存
location / {
root /home/work/web/xxxx-web;
index index.html;
access_log off; #关闭静态资源访问日志
expires 1d;
}
Vue前端nginx缓存案例:开启缓存后,浏览器再次访问页面加载的js,css时间基本为0ms,但是开启缓存可能导致用户不能拿到最新版本的js,css文件,可以根据更新频率设置合理缓存时间(如用户默认头像等),这样做可能还是不能满足迭代较快的前端项目,最好的做法是Vue每次打包能有不同的js,css文件名,这样每次上线后访问页面加载时就会重新加载静态资源:
一、新增开发插件: npm i mini-css-extract-plugin -D
二、Vue-cli3配置:(vue.config.js)增加配置(js,cs动态文件名)
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const date = new Date();
。。。。
configureWebpack: {
output: {
filename: `./static/js[name].${date.getTime()}.js`,
chunkFilename: `./static/js/[name].${date.getTime()}.js`
},
plugins: [
new MiniCssExtractPlugin({
filename: `./static/css/[name].${date.getTime()}.css`,
chunkFilename: `./static/css/[name].${date.getTime()}.css`
})
],
4.文件,目录,IP白名单访问限制
#防止文件上传漏掉——木马连接
location ~ ^/images/.*\.(php|php5|.sh|.pl|.py)$ {
deny all;
}
#后台管理指定IP连接
location /XXXX/manage/ {
allow 222.209.XX.XXX;
deny all;
......
}
#特殊URL禁止连接
location /admin/ {
return 404;
}