宝塔BT 自己编译nginx

需要编译到/www/server/nginx目录 www用户和用户组
同时需要输入以下命令 面板才读得到 把 "1.12"替换成你的nginx版本即可

echo "1.12.0" > /www/server/nginx/version.pl

 

nginx源码目录在 /www/server/nginx/src

阅读剩余部分 -

OpenResty的现状、趋势、使用及学习方法

1. OpenResty 是什么,适合什么场景下使用

和大部分知名开源软件诞生在欧美国家不同,OpenResty 自身和依赖的主要组件都是金砖国家的开发者发明的,这点还挺有意思。

 

Nginx 是俄罗斯人发明的, Lua 是巴西几个教授发明的,中国人章亦春把 LuaJIT VM 嵌入到 Nginx 中,实现了 OpenResty 这个高性能服务端解决方案。


通过 OpenResty,你可以把 nginx 的各种功能进行自由拼接, 更重要的是,开发门槛并不高,这一切都是用强大轻巧的 Lua 语言来操控。

 

它主要的使用场景主要是:

 

  • 在 Lua 中揉和和处理各种不同的 nginx 上游输出(Proxy,Postgres,Redis,Memcached 等)

     

  • 在请求真正到达上游服务之前,Lua 可以随心所欲的做复杂的访问控制和安全检测

 

  • 随心所欲的操控响应头里面的信息

     

  • 从外部存储服务(比如 Redis,Memcached,MySQL,Postgres)中获取后端信息,并用这些信息来实时选择哪一个后端来完成业务访问

     

  • 在内容 handler 中随意编写复杂的 Web 应用,使用 同步但依然非阻塞 的方式,访问后端数据库和其他存储

     

  • 在 rewrite 阶段,通过 Lua 完成非常复杂的 URL dispatch

     

  • 用 Lua 可以为 nginx 子请求和任意 location,实现高级缓存机制

 

组织 OpenResty 技术大会之前,我一直认为自己是一个孤独的 OpenResty 使用者,觉得自己在使用一个冷门的技术。


虽然大家都听说过 OpenResty 或者 ngx_lua,但感觉用在生产环境中使用的却少之又少,除了几个 CDN 公司外,好像没有听说过哪家知名互联网公司在使用。而 CDN 行业之所以使用,很多是受到 cloudflare 技术栈的影响,OpenResty 的作者也在国外这家 CDN 公司。


但办完这个大会,我发现使用者真的挺多,奇虎360的所有服务端团队都在使用,京东、百度、魅族、知乎、优酷、新浪这些互联网公司都在使用。有用来写 WAF、有做 CDN 调度、有做广告系统、消息推送系统,还有像我们部门一样,用作 API server 的。有些还用在非常关键的业务上,比如开涛在高可用架构分享的京东商品详情页,是我知道的 ngx_lua 最大规模的应用。

阅读剩余部分 -

openresty替换响应内容中http为https–replace-filter-nginx-module的使用

首先不知道openresty为何物的,可自行google!

 

问题:我们有一个网站,开始用的是http协议的,由于历史原因,路径写在各个地方,比较混乱。现在想启用https协议,可是现在的浏览器不充计https协议下加载http协议的样式,脚本等。

 

方案1: 将代码中的http全部修改成https,工作量比较大,并且风险太高

方案2: 在程序的输出到时,统一替换,这个虽然相对不错,不过感觉还是有点麻烦,把不属于业务的功能放到了业务代码上

方案3:   在web服务器上做统一替换,这也是我们最终决定的方案,我们选用openresty来做统一替换功能.

 

阅读剩余部分 -

nginx 安装配置sregex replace-filter-nginx-module替换返向代理内容

 replace-filter-nginx-module 替换示例
 replace_filter '"msg":"(.*?)"' '"msg":"1"' 'ig';
 #replace_filter '<div (.*?)>(.*?)</div>' '<br/>first div' 'ig';
replace_filter 'this is test (.*)<div class="name">' '</div><br/>last div' 'ig';
 
 

最后说一些可能会出现的问题

/usr/local/nginx/sbin/nginx: error while loading shared libraries: libsregex.so.0: cannot open shared object file: No such file or directory

对于上面这种问题,可以用下面方法解决

ldd /usr/local/nginx/sbin/nginx

确定问题后,如果是32位系统执行

ln -s /usr/local/lib/libsregex.so.0 /lib

 如果是64位系统,执行

ln -s /usr/local/lib/libsregex.so.0 /lib64

阅读剩余部分 -

Nginx替换过滤文本模块replace-filter-nginx-module

1.安装此模块需要先安装sregex运行库

apt-get update;
apt-get install git make gcc -y
#Centos改成yum git clone https://github.com/agentzh/sregex cd sregex make make install cd .. git clone https://github.com/agentzh/replace-filter-nginx-module wget http://nginx.org/download/nginx-1.2.6.tar.gz tar zxvf nginx-1.2.6.tar.gz cd nginx-1.2.6 ./configure --add-module=../replace-filter-nginx-module #自行加其他编译参数 make make install nginx.conf的用法举例: location /t { default_type text/html; echo abc; replace_filter 'ab|abc' X; } location / { # proxy_pass/fastcgi_pass/... # caseless global substitution: replace_filter '\d+' 'blah blah' 'ig'; replace_filter_types text/plain text/css; }

阅读剩余部分 -

Nginx内容替换模块http_substitutions_filter_module及实用案例分享

说到Nginx的内容替换功能,大部分人应该都听说过Nginx内置的的subs_filter替换模块,但是这个模块有个缺憾,就是只能替换一次,而且还不支持正则表达式,这就有些鸡肋了。Nginx内容替换模块http_substitutions_filter_module及实用案例分享

不过,我们可以集成一个第三方的替换模块:ngx_http_substitutions_filter_module,来实现我们的各种需求。

经过测试,这个模块至少有如下实用功能:

①、支持多次替换

②、支持正则替换

③、支持中文替换

Ps:略有遗憾的是,这个替换不能使用到 if 判断模块内,否则就超神了。。。

下面,简单介绍下 ngx_http_substitutions_filter_module 的安装实用以及一些实用案例。

阅读剩余部分 -

Nginx 多规则关键字替换模块 subs_filter_module

本文介绍一个nginx第三方模块nginx_substitutions_filter,此模块作用是替换过滤响应主体,nginx也有一个类似这样的原生模块(http_sub_module),但有一个缺点,就是只能使用一条规则,而nginx_substitutions_filter则不限规则数量(测试效率比原生模块稍慢一点)。

 

安装方法

    1.svn checkout http://substitutions4nginx.googlecode.com/svn/trunk/ substitutions4nginx-read-only

    2.yum install subversion

 

----------------------------------------------------------

由于其他一些原因,可能您无法连接到googlecode  那么我这里已经有打包好的tar包,解压出来然后重新编译安装nginx即可   下载地址:http://pan.baidu.com/s/1pJBMk2Z   2014新版下载地址:

http://pan.baidu.com/s/1c0rPPj6

原googlecode版本好像已经停止更新了,作者似乎迁移到GitHub上了,https://github.com/yaoweibin/ngx_http_substitutions_filter_module/

阅读剩余部分 -

nginx 中location和root,你确定真的明白他们关系?

最近公司开发新项目,web server使用nginx,趁周末小小的研究了一下,一不小心踩了个坑吧,一直404 not found!!!!!当时卡在location和root中,但是网上却比较少聊这方面的关系,一般都是聊location匹配命令(这里可以看看http://www.nginx.cn/115.html),花了一下午,彻底搞清楚了location和root到底怎样找到文件的。

 

nginx指定文件路径有两种方式root和alias,这两者的用法区别,使用方法总结了下,方便大家在应用过程中,快速响应。root与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。

 

 

阅读剩余部分 -