标签存档: 服务器

Nginx正则相关的参数及规则

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

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

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

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

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

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

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

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

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

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

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

Linux服务器使用Nginx+PHP搭建网站服务器 500相关错误信息总结

在日常使用Linux服务器搭建Nginx+PHP网站运行环境中经常会碰到各种的报错,除了最常见的404错误以外5XX错误也是出现频率比较高的一类报错,一共包含下面几类。

500(服务器内部错误) 服务器遇到错误,无法完成请求。
501(尚未实施) 服务器不具备完成请求的功能。例如,当服务器无法识别请求方法时,服务器可能会返回此代码。
502(错误网关) 服务器作为网关或代理,从上游服务器收到了无效的响应。
503(服务不可用) 目前无法使用服务器(由于超载或进行停机维护)。通常,这只是一种暂时的状态。
504(网关超时) 服务器作为网关或代理,未及时从上游服务器接收请求。
505(HTTP 版本不受支持) 服务器不支持请求中所使用的 HTTP 协议版本。 继续阅读 »

使用rrdtool生成FreeBSD系统服务器的CPU温度曲线

机房的一台FreeBSD前阵子无故Down掉,对系统服务排查了一遍,基本上排除了是系统问题,于是没有办法,只能烤机。果然不到1个小时服务器再次毫无征兆的Down掉!再次排查硬件,在拆机的过程中,发现CPU的散热片比较烫,考虑到这台服务器是自己组装的兼容机,而且是丢在角度里做备份服务用的,出问题的时候也没有盖上机箱盖板,基本上可以确定是CPU过热保护了。

于是等服务器凉下来后再次烤机,重点观察CPU的温度变化,果然不出所料,烤机开始后CPU的温度直线上升,很快就达到了90多度!!既然问题找到了,解决起来也就有方向了,更换了机箱里的散热风扇,把机箱盖也重新盖好。再次烤机,温度基本上稳定在了55度左右。

继续阅读 »

使用Vnstati生成图表对VPS的流量使用情况进行监控

对于购买海外VPS的站长来说,实时了解服务器的流量使用情况显的非常的重要,原因很简单,海外VPS主机一般都不会限制带宽使用,但是会限制每个月可以使用的流量,如果一个不小心用超了,自己又不知道,就会被主机商断网。这段时间如果碰巧站长在忙其他事情没有及时的发现的话,轻则广告费泡汤了,时间太长了还会造成被搜索引擎降权或者干脆清理出去的严重后果。

所以,安装一款靠谱的流量监控软件就很有必要了。这里我们用到的软件就是vnstat,安装也非常简单,各大发行版本都有对应的安装包,就算没有的话,编译安装也很容易。

继续阅读 »