使用ngx_memc和ngx_srcache模块构建高效透明的缓存机制已关闭评论
为了提高性能,几乎所有互联网应用都有缓存机制,其中Memcache是使用非常广泛的一个分布式缓存系统。众所周知,LAMP是非常经典的Web架构方式,但是随着Nginx的成熟,越来越多的系统开始转型为LNMP(Linux+Nginx+MySQL+PHP with fpm),这是因为Nginx采用基于事件机制的I/O多路复用思想设计,在高并发情况下其性能远远优于默认采用prefork模式的Apache,另外,相对于Apache,Nginx更轻量,同时拥有大量优秀的扩展模块,使得在Nginx上可以实现一些美妙的功能。
传统上,PHP中使用memcache的方法是使用php-memcache或...
lamp, lnmp, lua, memc, memcache, nginx, srcache阅读全文
1℃
借助 nginx proxy 模块我们可以给 ngx_lua 很方便地实现非阻塞 HTTP 客户端功能,即使用一个被 proxy 模块处理的内部 location 作为 HTTP client stub,然后通过 ngx_lua 中的 location.capture 接口调用它访问外部 URL。当然为了能解析外部域名,还需要指定 nginx 的 resolver 地址以开启 proxy 模块的域名解析功能。
下面就是一个简单的网页编码转换网关的 nginx 配置(需要事先安装 lua-iconv模块):
Nginx 配置代码
http
{
...
# 指定域名解析服务器地址
resolver 127.0.0.1;
...
lua, nginx, ngx_lua阅读全文
当ngx_cache_purge遇到大小写 [原创]已关闭评论
最近配置另外一套刚做的系统时遇到了些问题?采用nginx_cache缓存,使用ngx_cache_purge来清除缓存。由于之前的cms系统url全部是小写字母或数字,所以就没有这样的问题,现在的问题是url包含大小写字母,不管用户输入的是大小写字母都可以访问到指定内容,由于ngx_cache缓存是$host$uri$is_args$args做key进行md5后生成的缓存文件名,这样一来大写小写会各缓存一次,而清除缓存的时候是根据读取页面中的链接来清除缓存的,就会遇到某些缓存是清除不掉的。下面举几个例子。比如:
访问地址:http://www.dyx.com/go/...
lua, ngx_cache_purge, ngx_lua阅读全文
Nginx做下载时.ipa或.apk文件的处理方法已关闭评论
Nginx提供下载时.ipa或.apk文件的处理方法
最近app图鉴上线后,添加了不少android和iphone的应用下载,但发现了一个问题:在使用Nginx提供下载.ipa或.apk文件时会出现以下问题:通过IE浏览器下载会出现替换扩展名为.zip;而使用火狐浏览器下载则会出现流的形式,就是不会下载,而是以乱码的形式浏览,显然这都不是我们想要的。
下面我们先来了解下 nginx下conf/mime.types内各类型文件头信息:
text/vnd.sun.j2me.app-descriptor jad;
application/java-archive jar war ear;
applicati...
apk, app, ipa, nginx阅读全文
强大的nginx反向代理异步传输模式(原理)已关闭评论
2℃
1.隐藏php版本号
隐藏方法:vim php.ini添加如下代码
expose_php = Off
2.隐藏nginx版本号
隐藏方法:vim nginx.conf 在http里加入
sever_tokens= Off
3.隐藏apache版本号
隐藏方法:vim httpd.ini 添加如下代码
ServerTokens = ProductOnly
ServerSignature = Off
修改每个配置文件都要重启服务才可以生效。
伪装apache
编辑ap_release.h文件,修改“#define AP_SERVER_BASEPRODUCT \"Apache\"”为“#define AP_SERVER_BASEPRODUCT \"Microsoft-IIS/5.0\"”。
编辑os/unix/os.h文件,修改“#defi...
apache, nginx, php阅读全文
nginx rewrite问号处理已关闭评论
今天配置一个nginx的rewrite,简直是被搞死了。其实我就是想把/xxx/0.mp4?key=123456abcde转换为/xxx.mp4?segno=0&key=123456abcde这种形式经过不断的尝试,也分析了一下原因,发现niginx的内容设置中必须注意的一些问题:
1.nginx在进行rewrite的正则表达式中只会将url中?前面的部分拿出来匹配
2.匹配完成后,?后面的内容将自动追加到url中(包含?),如果不让后面的内容追加上去,请在最后加上?即可
3.如果想要?后面的内容时请使用$query_string
在这里提醒一点,调试的时候在rewrite的最后一个配置项中不要...
nginx, rewrite阅读全文
怎样区别nginx中rewrite时break和last已关闭评论
怎样区别nginx中rewrite时break和last
在使用nginx配置rewrite中经常会遇到有的地方用last并不能工作,换成break就可以,其中的原理是对于根目录的理解有所区别,按我的测试结果大致是这样的。
location /
{
proxy_pass http://test;
alias /home/html/;
root /home/html;
rewrite "^/a/(.*)\.html$" /1.html last;
}
在location / { 配置里:
1、使用root指定源:使用last和break都可以
2、使用proxy_pass指定源:使用last和break都可以
3、使用alias指定源:必须...
break, last, nginx, rewrite阅读全文
1℃
PHP,nginx配置和潜在执行任意代码,我以前的博客文章发布后,我遇到了一个单独的空字节注入漏洞nginx的旧版本(0.5.*,0.6.*,0.7,0.8<=0.7.65<=0.8.37)。通过利用此漏洞,攻击者可以导致服务器使用PHP的FastCGI作为PHP的服务器上执行任何公开访问的文件。
在nginx的含漏洞的版本中,空字节URI中默认允许的(他们的存在是通过命名zero_in_uri在ngx_http_request.h定义一个变量)。单个模块有能力选择退出处理空字节的URI。然而,并非所有这些,特别不FastCGI模块。
这次攻击事件本身很简单:恶意用户发出...
nginx, php, 注入漏洞, 空字节阅读全文
nginx使用rewrite配置多语言页面 [原创]已关闭评论
当我们打开很多网站时,可能大家会发现,它会根据你使用的语言自动判断并跳转到不同的语言界面。例如:Google 也就是你用不同的语言,那么输入Google首页就可以自动转向你使用的语言。在这个网络普及的时代,外贸的主要途径一定是网络。也许你的企业网站既有中文版本,同时也有英文版本(如果你的公司有外贸业务)。那么他们的网站是怎样实现这个功能呢?下面我们来研究下Web服务器的Header,HTTP_ACCEPT_LANGUAGE是服务器所接收的语言,一般来说是服务器的语言。在网站可以看到,firefox在安装多个语言包的时候,...
header, lang, language, nginx, rewrite阅读全文