标签存档: 配置

Nginx正则相关的参数及规则

最近帮客户配置服务器,经常修改Nginx的配置文件,频繁的用到正式匹配规则,这里整理了一些常用的正则参数及规则,以备查询。

Nginx配置中Location的语法规则 location [ = | ~ | ~* | ^~ | !~ | !~* ] /uri/{ … }

= 表示精确匹配
~ 表示区分大小写正则匹配
~* 表示不区分大小写正则匹配
^~ 表示URI以某个常规字符串开头
!~ 表示区分大小写正则不匹配
!~* 表示不区分大小写正则不匹配
/ 通用匹配,任何请求都会匹配到
匹配顺序

多个location配置的情况下匹配顺序为:

首先匹配 =
其次匹配 ^~
其次是按文件中顺序的正则匹配
最后是交给 / 通用匹配
当有匹配成功时候,停止匹配,按当前匹配规则处理请求。 继续阅读 »

对Nginx缓存服务器进行大文件限速以改善用户体验

过去很长一段时间一直认为在服务器端对用户进行访问限速会使用户的浏览体验变差,是一种负优化,直到最近才发现对用户进行合理的限速也能改善用户的访问体验。

事情还要从一个多月前说起,在例行进行服务器检查的时候,发现几台Nginx缓存服务器的带宽波动非常大,经常短时间内顶满带宽,然后又降回到非常低的水平,害的我强迫症都犯了,到底要不要增加带宽呢?不增加的话,带宽顶满对用户体验来说肯定是会有影响的,但如果增加了带宽,一半以上的时间带宽使用率又非常的低,显然老板不会同意。

还是先从日志入手吧,随手翻了翻几台缓存服务器的日志,基本可以确定带宽顶满的时候是在进行视频文件的请求,经过上一次的教训,现在所有的视频文件都是从缓存服务器上直接读取缓存文件的,每个视频文件大小基本都在30-50M之间的样子,倒也不算太大,但访问量上去了以后的带宽占用情况还是比较可观的,就算每台服务器平均有5个视频连接并发,按目前顶满带宽的情况下,每个请求差不多只要5-10秒的样子才能完全下载完成。

但项目上用到的视频又不多,大部分的时间其实是没有视频文件的请求的,但一旦有视频文件的请求,哪怕是只有一个请求,由于视频文件偏大,还是会在短时间内把带宽顶到满的,这就造成了部分用户访问项目出现忽快忽慢的情况。

问题原因找到了,解决起来也就简单了,因为大部分视频文件的时长都在1分钟以上,并不是所有的用户都会耐心的把完整的视频都看完,所以完全没有必要让用户在几秒的时间将完整的视频下载到本地,只要能让视频保证流畅播放就可以了。 继续阅读 »

关于自己挖的一个Nginx做视频文件加速的坑

手里有一个中型的网站项目,项目上的图片等静态文件使用自己搭建的多台Nginx服务器做缓存加速,不要问我为什么不用OSS等云存储,当有持续的大量的请求量的时候你就知道按流量计费到底有多坑。

由于考虑到部分图片及js等静态文件可能会有更新的情况,所以缓存的有效期设为了1个小时。也就是每过一个小时Nginx缓存服务器都会去重新请求一次源服务器,以获取最新版本的静态文件。

整套系统稳定运行了几个月以后,通过流量监控系统分析了历史数据发现源服务器的带宽使用一直保持在1-3M之间,偶尔突发流量也会不超过5M,本着够用就好的原则,就把源服务器的带宽调整成了5M(这就是给自己挖了个大坑,真是自作孽不可活啊)。

带宽调整完的几个月里,系统运行也还算稳定,带宽使用也都在正常范围内。就在上个月的一天凌晨,产品经理一个电话把睡梦中我的给召唤起来,说是网站图片加载缓慢。第一反应是Nginx缓存服务器的带宽不够用了,马上查了一下各个节点的带宽使用情况,都不高,或者说低的有些不正常,而且伴随有持续的下行流量,这就不对劲了。

继续阅读 »

这年头,技术就那么不值钱么?

前几天,突然有个前意向客户(什么叫前意向客户呢?就是以前谈过相关业务,但没有成交的客户)在QQ上找我,说网站有点小问题,系统是Linux他们不太会用,问能不能帮忙解决一下。当时刚好手里也没啥事,就答应下来,心想说不定以后还有可能会有业务往来,就当交个朋友吧。

然后,他们的一个所谓的技术人员联系到我,说只能通过QQ远程他们的电脑来进行操作,心想,客户可能不太信任我,毕竟是人家的生产系统,也没毛病。连到服务器上,给他们各种的改配置文件,调服务器参数,花了差不多半个来小时,问题解决。

本来以为事情到这里就结束了,然后意想不到的事情发生了!客户说麻烦了我这么久,有点过意不去,不能让我白忙活,说要发个红包给我。当时心里还是有点小激动的,心里在想,没有白忙活,还能赚点外快,晚上可以回家改善下伙食拉。

收到红包的那一刻,我都有点不相信我的眼睛了。

你要是一分钱都不给,我本来也没什么,就当朋友帮忙了。

你TMD发这么个红包是几个意思。感觉就是种侮辱!

MySQL数据库出现1862错误

今天是正月十五,公司上午还组织了场内部培训,直到中午11点多才结束,真是苦逼,收拾完东西,马上开车1个多小时赶回农村老家,爸妈还在家里等着我回来一起吃中午饭。

吃完午饭,突然接到客户电话说网站无法访问,还好过年回来把笔记本丢在家里没有带回去,赶紧用笔记本登陆服务器检查,发现一切都正常,nginx还有mysql都正常运行,用户是使用的是discuz搭建的论坛,报了一个(1862)notconnect 错误。但是使用客户的mysql帐号跟密码从服务器命令行登陆mysql是完全正常的。

这就有点不能理解了,服务器上登陆mysql明明是正常的,网站却无法正常连接数据库。百度了半天也没有找到任何有价值的信息。试过了N种办法,最后还是没有解决。 继续阅读 »