首页
更多应用
Search
1
修改iview的标签为i-的形式而不是驼峰的形式
2,791 阅读
2
PHP微信和企业微信签名
2,522 阅读
3
在VUE中怎么全局引入sass文件
2,223 阅读
4
vscode硬件占用较高解决方案
2,017 阅读
5
解决Macos下storm系列IDE卡顿的问题
1,975 阅读
默认分类
JS
VUE
CSS
mac使用技巧
React
fastmock
登录
/
注册
Search
标签搜索
react
js
vue
vscode
nodejs
项目
代码
webpack
工具
nginx
小程序
css
fastmock
eslint
npm
http
vue-cli3
git
浏览器
const
fastmock技术社区
累计撰写
102
篇文章
累计收到
26
条评论
首页
栏目
默认分类
JS
VUE
CSS
mac使用技巧
React
fastmock
页面
更多应用
搜索到
56
篇与
的结果
2021-08-11
Nginx限制IP访问频率
最近网站经常出现假死的状态,重启nginx可恢复,但是短时间后又出现,经过排查日志发现,有一个 IP 存在过度频繁请求的情况,十分钟左右的时间请求了12000次左右,导致了服务器资源无法释放,所以产生了假死现象。应急处理:在服务器安全组策略里禁止这个 ip 地址入站一开始想通过程序控制访问频率,但是发现不能从根本解决问题,因为程序还是得要响应用户请求,所以想到了通过nginx来控制,于是在网上找到了如下解决方案。主要用到了nginx的ngx_http_limit_conn_module和ngx_http_limit_req_module两个配置:ngx_http_limit_conn_module:限制并发连接数;ngx_http_limit_req_module:限制一段时间内同一IP的访问频率;首先,我们为了防止别人来攻击,或者访问量异常过高导致服务器崩掉,就需限制访问量,如果是一瞬间的并发访问,那么我们就需要限制一秒之内的并发连接数,此时就需要用到第一个配置http { limit_conn_zone $binary_remote_addr zone=addr:10m; #定义一个名为addr的limit_req_zone用来存储session,大小是10M内存, #以$binary_remote_addr 为key #nginx 1.18以后用limit_conn_zone替换了limit_conn, #且只能放在http{}代码段. ... server { ... location / { limit_conn addr 10; #连接数限制 #设置给定键值的共享内存区域和允许的最大连接数。超出此限制时,服务器将返回503(服务临时不可用)错误. #如果区域存储空间不足,服务器将返回503(服务临时不可用)错误 } } }上面的配置能达到的效果就是,一瞬间访问的时候,只会有10个IP能得到响应,后面的IP直接就返回503状态。其次,如果一个IP能访问到服务器,那么它如果疯狂的调用接口,如:页面上写个for循环一直刷请求,且不说数据会错乱,最后可能导致将服务器的带宽耗尽,从而导致服务器假死崩溃,此时就需要用到第二个配置http{ # ...其他配置 #定义一个名为allips的limit_req_zone用来存储session,大小是10M内存, #以$binary_remote_addr 为key,限制平均每秒的请求为20个, #1M能存储16000个状态,rete的值必须为整数, #如果限制两秒钟一个请求,可以设置成30r/m limit_req_zone $binary_remote_addr zone=allips:10m rate=20r/s; ... server{ ... location / { ... #限制每ip每秒不超过20个请求,漏桶数burst为5 #brust的意思就是,如果第1秒、2,3,4秒请求为19个, #第5秒的请求为25个是被允许的。 #但是如果你第1秒就25个请求,第2秒超过20的请求返回503错误。 #nodelay,如果不设置该选项,严格使用平均速率限制请求数, #第1秒25个请求时,5个请求放到第2秒执行, #设置nodelay,25个请求将在第1秒执行。 limit_req zone=allips burst=5 nodelay; ... } ... } ... }此时能达到的效果,同一个ip在一秒钟只能获得20个访问,超过20个请求,后面的也是直接返回503。上面的两个配置加在一起就可以做到:一秒只有10个连接,每个连接只能发送20个请求。注意:对request的访问限制,大家一定要注意数量的配置,否则一不小心就会 503(ERR_ABORTED 503 (Service Temporarily Unavailable))
2021年08月11日
514 阅读
0 评论
0 点赞
2021-08-11
Nginx 配置按日期单独生成日志文件
1、http 配置增加下面代码定义当前日期的变量# ... http { # ... map $time_iso8601 $logdate { '~^(?<ymd>\d{4}-\d{2}-\d{2})' $ymd; default 'date-not-found'; } }2、对应站点的server里增加日志文件位置配置server { # ... location / { proxy_pass http://127.0.0.1:3000; limit_req zone=allips burst=20 nodelay; #limit_conn one 40; #连接数限制 #带宽限制,对单个连接限数,如果一个ip两个连接,就是500x2k limit_rate 500k; } access_log /usr/lcoal/nginx/logs/xxx.com/access-$logdate.log; error_log /usr/lcoal/nginx/logs/xxx.com/error.log; }注:日志文件目录一定要有读写权限
2021年08月11日
440 阅读
0 评论
0 点赞
2021-08-02
使用ES6模板字符串时怎么不带换行符换行代码避免eslint报max-len错误
在现代前端开发中,es6的模板字符串可以说是除了let const之外我们使用得最多的es6新特性了。然而,我们经常会遇到一个问题就是代码换行问题,以前写字符串换行时,我们都是通过 + 拼接字符串的,这样最后的拼接结果也是正常的字符串,例如var str = 'hello' + ' world' consle.log(str); // 结果为 hello world当我们使用模板字符串时,如果我们这样写const str = `hello world`; consle.log(str);那上面的打印结果会是helloworld这显然不是我们希望的结果。解决方案如下const str = `hello \ world`; consle.log(str);官方文档说明 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Template_literals这也是unix shell脚本的历史性解决方案)是使用转义字符 \ 来转义回车
2021年08月02日
372 阅读
0 评论
0 点赞
2021-07-11
fastmock 新增功能-从我的其他项目导入接口
很多用户反馈,有时候新建的项目,很多接口和之前的项目的接口是重复的或者url是相同的,希望支持从现有项目导入接口的功能,现在,这个功能已经开发好并上线从其他项目导入接口 1、在项目接口管理页面点击”从其他项目导入“ 2、在弹出层中切换到有接口的项目然后选择要导入到当前项目的接口 3、点击右下角的”确认导入“按钮即可完成导入注意只能从自己创建或者已经加入的项目导入选择的接口url和method在当前项目已经存在,则不会导入这个接口导入的接口是独立存在的,修改和删除都不影响原接口
2021年07月11日
586 阅读
1 评论
0 点赞
2021-04-25
fastmock 支持不同格式数据返回
Content-Type 数据格式应许多用户的要求,现不断加入不同的数据格式支持,使用方式很简单,在请求头中加入 Content-Type 字段来告诉 fastmock 您需要返回什么格式的内容即可:如:使用 axios 作为 ajax 库时axios.defaults.headers.common['Content-Type'] = 'application/json;charset=UTF-8';录入数据时,还是录入 json 数据,还是可以正常使用 mockjs 模拟一切数据现已支持的数据类型数据类型Content-Type 值jsonapplication/jsonxmltext/xml使用示例录入规则{ data: [{ name: '张三' },{ name: 'lisi' }] }postman 请求 jsonpostman 请求 xml
2021年04月25日
404 阅读
0 评论
0 点赞
2021-04-18
jsplumb 开发文档收集
jsplumb基本概念https://www.jianshu.com/p/0e7bb5c081c8https://www.jianshu.com/p/0e7bb5c081c8jsplumb 阅读笔记(英文文档翻译)https://www.cnblogs.com/ysx215/p/7615677.html拓扑图编辑器-jsplumb基本配置https://www.jianshu.com/p/d68a8e61ff2d【原英文文档】https://docs.jsplumbtoolkit.com/community/current/articles/connections.html#detachinggithub 中文文档https://github.com/MarvenGong/jsplumb-chinese-tutorial
2021年04月18日
228 阅读
0 评论
0 点赞
2021-03-26
MySql连接和状态查看方法
怎么进入mysql命令行呢? mysql的安装目录下面有个bin目录,先用命令行进入该目录,然后用 mysql -uroot -p123456 来登录(注意:用户名和密码不用包含“”)命令: show processlist;如果是root帐号,你能看到所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接。show processlist;只列出前100条,如果想全列出请使用show full processlist;mysql> show processlist;命令: show status;命令:show status like '%下面变量%';Aborted_clients 由于客户没有正确关闭连接已经死掉,已经放弃的连接数量。Aborted_connects 尝试已经失败的MySQL服务器的连接的次数。Connections 试图连接MySQL服务器的次数。Created_tmp_tables 当执行语句时,已经被创造了的隐含临时表的数量。Delayed_insert_threads 正在使用的延迟插入处理器线程的数量。Delayed_writes 用INSERT DELAYED写入的行数。Delayed_errors 用INSERT DELAYED写入的发生某些错误(可能重复键值)的行数。Flush_commands 执行FLUSH命令的次数。Handler_delete 请求从一张表中删除行的次数。Handler_read_first 请求读入表中第一行的次数。Handler_read_key 请求数字基于键读行。Handler_read_next 请求读入基于一个键的一行的次数。Handler_read_rnd 请求读入基于一个固定位置的一行的次数。Handler_update 请求更新表中一行的次数。Handler_write 请求向表中插入一行的次数。Key_blocks_used 用于关键字缓存的块的数量。Key_read_requests 请求从缓存读入一个键值的次数。Key_reads 从磁盘物理读入一个键值的次数。Key_write_requests 请求将一个关键字块写入缓存次数。Key_writes 将一个键值块物理写入磁盘的次数。Max_used_connections 同时使用的连接的最大数目。Not_flushed_key_blocks 在键缓存中已经改变但是还没被清空到磁盘上的键块。Not_flushed_delayed_rows 在INSERT DELAY队列中等待写入的行的数量。Open_tables 打开表的数量。Open_files 打开文件的数量。Open_streams 打开流的数量(主要用于日志记载)Opened_tables 已经打开的表的数量。Questions 发往服务器的查询的数量。Slow_queries 要花超过long_query_time时间的查询数量。Threads_connected 当前打开的连接的数量。Threads_running 不在睡眠的线程数量。Uptime 服务器工作了多少秒。
2021年03月26日
353 阅读
0 评论
0 点赞
2021-03-12
Parallels Desktop 16 在最新版 Mac 系统 Big Sur (11.x)中 无法联网终极解决方案
如果已经打开了 Parallels Desktop。先退出,最好是去“活动监视器”退出。打开目录:/Library/Preferences/Parallels 或 /资源库/Preferences/Parallels找到 network.desktop.xml文件,打开(用 vim 打开,或者用 vscode 打开,保存的时候,要用sudo权限保存)找到-1默认值是 -1 将其值改为 0如果没有,直接将<UseKextless>0</UseKextless>复制放到对应位置保存即可。<?xml version="1.0" encoding="UTF-8"?> <ParallelsNetworkConfig dyn_lists="VirtualNetworks 1" schemaVersion="1.0"> <SystemFlags></SystemFlags> <IPv6Enabled>1</IPv6Enabled> <UseKextless>0</UseKextless> <StartNaptd>-1</StartNaptd> <NATDAllowEtcHostsWrite>1</NATDAllowEtcHostsWrite> <UDPSendBufSize>4106</UDPSendBufSize> <VirtualNetworks id="0" dyn_lists="VirtualNetwork 2"> <!-- 省略内容 --> </VirtualNetworks> </ParallelsNetworkConfig>然后,直接打开 Parallels Desktop 即可,无需终端打开。
2021年03月12日
272 阅读
0 评论
0 点赞
2021-02-05
前端随时随地静态服务器 anywhere 真的是个好名字
如今 SPA 盛行的今天,你有没有过这样的烦恼,当你 build 一个项目到了 dist 或者 build 目录,生成了一个静态文件 index.html 时 , 你希望能校验一下这个文件在服务器上然后被用户访问时实际的效果,并且要是真实环境一样的根目录的方式,这时候你就希望能快速启动一个服务能支持 html 文件,又不希望去做过多的配置。这里推荐一个 nodejs 命令行应用 anywhere ,它真的像它的名字一样,可以让你在你的电脑命令行工具中,任意位置快速启动一个服务器,无需任何配置,一条命令轻松解决首先,保证你的电脑已经安装了 nodejs 环境 怎么检查是否安装?问度娘。打开命令行工具 执行命令npm i -g anywhere 安装 anywhere 工具。等待安装完成。。。执行 anywhere --help 检查是否安装成功,如果安装成功,会打印如下信息Usage: anywhere --help // print help information anywhere // 8000 as default port, current folder as root anywhere 8888 // 8888 as port anywhere -p 8989 // 8989 as port anywhere -s // don't open browser anywhere -h localhost // localhost as hostname anywhere -d /home // /home as root anywhere -l // print log anywhere -f // Enable history fallback在命令行中随便进个目录,执行anywhere即可以默认配置启动一个服务器,如果成功,会打印如下信息Running at http://10.7.129.33:8000/ Also running at https://10.7.129.33:8001/如果这个目录下有 文件,那你就可以直接在启动成功后的地址后面加上 /文件 访问了,例如 http://10.7.129.33:8000/test.txt当然,如果这个文件是一个 html ,浏览器就会把它解析成网页了。具体可指定的选项,参考上面的 help 就可以了,是不是很简单?,名字也很好记,anywhere ,随便在哪里都可以。
2021年02月05日
398 阅读
0 评论
0 点赞
2021-01-06
微信小程序后端无法保持session的原因及解决办法问题
最近在开发一个小程序遇到一个问题,后端接口的登录验证通过postman调试是可以成功的,后端采用了session机制验证token信息,因为postman可以调试通过,那么可以排除是后端没开启session的问题,最后发现,原来浏览器会自动维护cookie,而小程序的wx.request不会。这涉及到session与cookie的关系及保存机制的问题。首先,cookie是保存在客户端的信息,而session是保存在服务器的信息。那服务器如何识别单独用户的session,在一次连接下,如何判别该用户是属于哪一个session。机制是,服务器生成一个sessionid辨别用户,并在相应中的cookie带上该sessionid值。在用户下一次请求时,请求头中cookie理应也带上该sessionid,以便服务器辨别用户会话。其中辨别机制和session存储机制涉及到序列和反序列化,在session.save_path中,为每一个session单独创建一个文件,文件名为sessionid,内容则是此次会话保存的session。而wx.request并不会在请求中带上cookie,所以导致每次请求都被服务器分配一个新的sessionid,造成会话不能保持的后果。解决办法应在wx.request中带上该sessionid,或者重新封装wx.request。我采用了在请求头中的Cookie字段带上sessionid的方式自己维护一个header,在wx.request中保存和发送Cookie。首先在app.js中存储一个全局变量,存放header。globalData: { header: { "content-type": "application/x-www-form-urlencoded", 'Cookie': '' } }然后在每一次wx.request中的请求参数中带上该header。在每一次响应中检测并保存Cookie到header。wx.login({ success: (res) => { getToken({ data: { code: res.code, Cookie: getApp().globalData.cookie }, success: (res) => { console.log(res); // 注:此处的resHeader是在请求方法中封装好返回的返回体中的ResponseHeader if (res.resHeader["Set-Cookie"] != null) { //设置cookie This.globalData.Cookie += res.resHeader["Set-Cookie"] } const token = res.data.token; console.log('getToken success', res); This.globalData.token = token; wx.setStorage({ key: 'token', data: token}) }, }) } })其他请求的请求头中带上Cookie信息 header: { token: res.data, Cookie: getApp().globalData.Cookie },测试第一次请求接口-登录接口RequestHeader: Accept: */* Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Connection: keep-alive content-type: application/json Cookie: Host: marvengong.natapp1.cc Referer: https://servicewechat.com/wx66bf3980d8d1660f/devtools/page-frame.html token: D3F3CD0A-FB1C-6B30-8C5B-41A8AAA2A799 User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1 wechatdevtools/1.03.2011120 MicroMessenger/7.0.4 Language/zh_CN webview/ 第一次请求的响应ResponseHeaderCache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Connection: Keep-Alive Content-Type: text/html; charset=utf-8 Date: Wed, 06 Jan 2021 14:22:52 GMT Expires: Thu, 19 Nov 1981 08:52:00 GMT Keep-Alive: timeout=5, max=100 Pragma: no-cache Server: Apache/2.4.39 (Win64) OpenSSL/1.1.1b mod_fcgid/2.3.9a mod_log_rotate/1.02 Set-Cookie: PHPSESSID=t3fk6bpkrj2njiejsp0qva9fv1; path=/ Transfer-Encoding: chunked X-Powered-By: PHP/5.6.9第二次请求--提交用户信息接口RequestHeaderAccept: */* Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Connection: keep-alive Content-Length: 842 content-type: application/json Cookie: PHPSESSID=t3fk6bpkrj2njiejsp0qva9fv1; path=/ Host: marvengong.natapp1.cc Origin: http://127.0.0.1:23460 Referer: https://servicewechat.com/wx66bf3980d8d1660f/devtools/page-frame.html token: 88845DB7-DDA4-D515-1BC0-EE812B5142D9 User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1 wechatdevtools/1.03.2011120 MicroMessenger/7.0.4 Language/zh_CN webview/可以看到第二次请求带上了Cookie信息,其中的重要信息就是PHPSESSID,这是客户端和服务端会话的票据以上方法基本能解决微信小程序Cookie问题。
2021年01月06日
304 阅读
0 评论
0 点赞
1
2
3
4
...
6