标签存档: Nginx

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 协议版本。 继续阅读 »

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

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

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

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

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

继续阅读 »

关于Nginx与Apache执行PHP脚本的效率问题

还记得05年刚开始接触Web服务器的时候,Web服务一直都是用的Apache,一次偶然的机会,在一篇博文中看到了Nginx这个高大上的东西,更高的负载能力、更高并发支持、更低资源占用率,这个俄国人开发的轻量级Web服务应用一下就把我折腾的兴趣给勾了起来。从此一发不可收拾,把所有自己用的跟客户用的服务器上全部换成Nginx,看着内存占用一下少了一大截,心里满满的成就感啊!这年头服务器不使用Nginx出门都不好意思跟同行打招呼!

这些年来的陪伴,有Nginx的日子并不孤单,虽然很多应用都要求配置ReWrite规则,而且官方提供的文档全是关于Apache的,但使用Nginx配置规则也可以完美实现,那就完全没有理由不使用Nginx吧。本来以为找到了终极解决方案,直到前不久的一天使用 magento建了一个外贸站,让我不得不重新思考是Nginx还是Apache的问题了。 继续阅读 »