手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:nginx

转一下:OpenResty

前段时间,老王推荐了一个伪同步的代码,async,可以到github上找到代码:https://github.com/hugozhu/async_php/,其中,有一个lua的目录,是用来为nginx提供插件以担当这个同步功能的一些玩意。
于是冲到nginx上看了一下,NND,没这玩意嘛 .
再一瞅github上,原来还写着:
ngx_lua module - http://openresty.org latest stable release
我晕,那openresty是什么玩意呢?去官方看了看,一大堆英文,但是左侧的支付宝捐赠让我怀疑这应该是个国人的作品。于是找啊找,找了一个中文介绍:

官网: http://openresty.org/
虽然是中国人做的,但没几个汉字.....

我用Nginx,是这样一个过程:
1. 系统rpm中的nginx,能让其跑起来
2. 玩配置文件
3. 玩编译选项
4. 写插件,集成第三方插件

OpenResty , 是淘宝一位大牛(agentzh)集成的包含N多好插件的Nginx捆绑源码包,这位仁兄自称Nginx最活跃的第三方模块开发人员哦

下面,当然要列一下到底集成了什么模块:

LuaJIT -- 极速版Lua实现
ArrayVarNginxModule -- 数组类型的Nginx变量
AuthRequestNginxModule -- 鉴权,想象一下以C代码的速度判断一个请求是否合法,是不是很有快感呢?!
DrizzleNginxModule -- -MySQL桥,非阻塞的哦,我又爱又恨的一个模块,值得注意的是,其响应是RDS流
EchoNginxModule -- 以非常直观的方式在Nginx配置文件中编写简单的处理逻辑,源码包含大量注释,绝对是入门好例子!!
EncryptedSessionNginxModule -- 加密会话
FormInputNginxModule -- 解析post请求中的参数,这下子,简单请求根本不需要PHP/Java来处理啦
HeadersMoreNginxModule -- Nginx默认的header模块只能添加或忽略,这个给你CRUD全套的!!
IconvNginxModule -- 编码转换,不多说,也不懂
StandardLuaInterpreter -- 与Lua官方实现所匹配,一般用不上,因为我们用LuaJIT!!
MemcNginxModule -- 与Memcached的绝配,谁用谁知道!! 与upstram_keepalive一起用,你能更High!!
Nginx
NginxDevelKit -- N多第三方插件都依赖的东西,不知道为啥
LuaCjsonLibrary -- Lua版的Json处理库实在太慢,这个才叫速度!!
LuaNginxModule -- 我的最爱,一般逻辑,完全没必要用Java/PHP啦
LuaRdsParserLibrary -- 在Lua中直接处理RDS流,速度杠杠的!
LuaRedisParserLibrary -- 在Lua中处理Redia模块的响应,暂时我还没用上
PostgresNginxModule -- Nginx-Postgres桥,输出的也是RDS流
RdsCsvNginxModule -- RDS流转CVS格式,不知道能干啥,报表?
RdsJsonNginxModule -- RDS流转JSON字符串,之前经常用这个
Redis2NginxModule -- Nginx-Redis2桥
SetMiscNginxModule -- 提供很多很实用的方法,例如base64编解码,URL编解码,SQL防注入等等
SrcacheNginxModule -- 缓存模块,据说跟Memc模块一起用比较爽
UpstreamKeepaliveNginxModule -- 与Memc模块的标配,号称性能提升几倍呢
XssNginxModule -- 防跨站攻击的

OpenResty的最大的好处是帮你弄清楚各个模块的编译顺序,别小看,学问大大的呢

当初没有这东西,单单弄清楚模块间的编译顺序就耗费不少时间

来吧,试试这个国产的精品!!
-------EOF--------
以上这段内容来自:http://wendal.net/338.html
值得看看哦。可以尝试用lua写插件

Tags: nginx, openresty, github

开发中的一些注意事项

开发中遇到一些问题,值得记住,所以我记录了一下
1、在项目中为了取得泛域名的前缀网址,这个前缀是指定的a,b,c三种,如果前缀不在这三种之内,默认为a,在apache下面的时候,建了一个*.test.neatstudio.com的泛域名指到vhost中。然后用偷懒的方法list(explode(".",$_SERVER['SERVER_NAME']))就取到了a,b,c,因为在apapche中,$_SERVER['SERVER_NAME']就是实际的a.test.neatstudio.com。然而到了nginx下行不通了。在nginx下,$_SERVER['SERVER_NAME']居然还是test.neatstudio.com,最后打印$_SERVER变量,发现$_SERVER['SERVER_HOST']才是泛域名的a.test.neatstudio.com。在此做一个记录

2、chown处理大量小文件时,你就等着CPU标高100%吧。这个问题很痛苦,但没办法

3、我晶。我记得要写一个很重要的笔记 的。我TMD又忘了。被第一个问题打断了。我晶啊,算了。等想起来再说吧

Tags: nginx, apache

yii:Apache and Nginx configurations

yii的urlmanager可以让项目在访问的时候隐藏index.php,也可以以更优雅的urlrewrite方式来显示,但这一切需要一些配置,在apache上的配置上就相对比较简单,直接参考wordpress的官方配置就完了,但其实很久以来,一直都没有人写过nginx下的配置。大家都是在根据wordpress配置来更改的,比如lnmp项目中,就是:

XML/HTML代码
  1. location / {  
  2. if (-f $request_filename/index.html){  
  3.                 rewrite (.*) $1/index.html break;  
  4.         }  
  5. if (-f $request_filename/index.php){  
  6.                 rewrite (.*) $1/index.php;  
  7.         }  
  8. if (!-f $request_filename){  
  9.                 rewrite (.*) /index.php;  
  10.         }  
  11. }  

不过,这两天在看官方guide的文档,原来这些问题,官方已经提供方案了:http://yii.neatcn.com/doc/guide/1.1/en/quickstart.apache-nginx-config#nginx

1. Apache

Yii is ready to work with a default Apache web server configuration. The .htaccess files in Yii framework and application folders restrict access to the restricted resources. To hide the bootstrap file (usually index.php) in your URLs you can add mod_rewrite instructons to the .htaccess file in your document root or to the virtual host configuration:

XML/HTML代码
  1. RewriteEngine on  
  2.   
  3. # if a directory or a file exists, use it directly  
  4. RewriteCond %{REQUEST_FILENAME} !-f  
  5. RewriteCond %{REQUEST_FILENAME} !-d  
  6. # otherwise forward it to index.php  
  7. RewriteRule . index.php 

2. Nginx

You can use Yii with Nginx and PHP with FPM SAPI. Here is a sample host configuration. It defines the bootstrap file and makes yii catch all requests to unexisting files, which allows us to have nice-looking URLs.

XML/HTML代码
  1. server {  
  2.     set $host_path "/www/mysite";  
  3.     access_log  /www/mysite/log/access.log  main;  
  4.   
  5.     server_name  mysite;  
  6.     root   $host_path/htdocs;  
  7.     set $yii_bootstrap "index.php";  
  8.   
  9.     charset utf-8;  
  10.   
  11.     location / {  
  12.         index  index.html $yii_bootstrap;  
  13.         try_files $uri $uri/ $yii_bootstrap?$args;  
  14.     }  
  15.   
  16.     location ~ ^/(protected|framework|themes/\w+/views) {  
  17.         deny  all;  
  18.     }  
  19.   
  20.     #avoid processing of calls to unexisting static files by yii  
  21.     location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {  
  22.         try_files $uri =404;  
  23.     }  
  24.   
  25.     # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000  
  26.     #  
  27.     location ~ \.php {  
  28.         fastcgi_split_path_info  ^(.+\.php)(.*)$;  
  29.   
  30.         #let yii catch the calls to unexising PHP files  
  31.         set $fsn /$yii_bootstrap;  
  32.         if (-f $document_root$fastcgi_script_name){  
  33.             set $fsn $fastcgi_script_name;  
  34.         }  
  35.   
  36.         fastcgi_pass   127.0.0.1:9000;  
  37.         include fastcgi_params;  
  38.         fastcgi_param  SCRIPT_FILENAME  $document_root$fsn;  
  39.   
  40.         #PATH_INFO and PATH_TRANSLATED can be omitted, but RFC 3875 specifies them for CGI  
  41.         fastcgi_param  PATH_INFO        $fastcgi_path_info;  
  42.         fastcgi_param  PATH_TRANSLATED  $document_root$fsn;  
  43.     }  
  44.   
  45.     location ~ /\.ht {  
  46.         deny  all;  
  47.     }  
  48. }  

Using this configuration you can set cgi.fix_pathinfo=0 in php.ini to avoid many unnesessary system stat() calls.

Tags: yii, apache, nginx, wordpress, urlrewrite

Lnmp一键安装

如果你是VPS,又不太会配置系统,那么这个选择就挺不错的。。LNMP一键安装包,一下子就把所有的东西全部安装回来了,而且每增加一个域名之类的都不算特别难,当然前提是你最起码得懂一点点linux的操作,比如你会使用ssh,那样,你在vps下就能很方便的操作了(我今天操作了一次,只是安装的时候非常长,还好,国外的VPS速度很快,就是编译时间长了一点)
来吧,看步骤和内容吧。

系统需求:

  • 需要2 GB硬盘剩余空间
  • 128M以上内存
  • 安装步骤:

    1、下载LNMP一键安装包:
  • 可以选择使用下载版(推荐国外或者美国VPS使用)或者完整版(推荐国内VPS使用),如果使用下载版执行命令 wget -c http://soft.vpser.net/lnmp/lnmp0.5.tar.gz,如果使用完整版,执行命令 wget -c http://soft.vpser.net/lnmp/lnmp0.5-full.tar.gz,执行上述命令后LNMP一键安装包就会被下载到VPS上。

  • 2、解压LNMP一键安装包:
  • 执行tar zxvf lnmp0.5.tar.gz 或者tar zxvf lnmp0.5-full.tar.gz 就会将LNMP一键安装包解压缩。

  • 3、CentOS下安装步骤
  • 下载版执行命令 cd lnmp0.5/ ,完整版执行命令:cd lnmp0.5-full/
  • 然后再执行./centos.sh ,输入要绑定的域名,回车,再输入要设置的MySQL root的密码,再次回车确认。程序会自动安装编译Nginx、PHP、MySQL、phpMyAdmin、Zend这几个软件。

  • 4、Debian/Ubuntu下安装步骤
  • 下载版执行命令 cd lnmp0.5/ ,完整版执行命令:cd lnmp0.5-full/
  • 然后32位系统执行./debian.sh ,输入要绑定的域名,回车,再次输入VPS/服务器所在位置:asia、 america、europe、oceania或africa,回车,再输入要设置的MySQL root的密码,回车后,再次回车确认。程序会自动安装编译Nginx、PHP、MySQL、phpMyAdmin、Zend这几个软件。安装大约10分 钟左右需要设置MySQL root用户的密码。
  • 安装其他组件

  • 1、安装eAccelerator,执行如下命令:./eaccelerator.sh 就会自动安装并重启web服务。
  • 2、安装ionCube,执行如下命令:./ionCube.sh 就会自动安装并重启web服务。
  • 3、安装PureFTPd和管理面板,执行如下命令:./pureftpd.sh 就会自动安装PureFTPd,安装完PureFTPd,需要在浏览器执行http://你的域名或IP/ftp/install.php 安装PureFTPd用户管理。详细教程参考:http://www.vpser.net/manage/lnmp-pureftpd-cp.html
  • 4、安装VsFTPD,执行如下命令:./vsftpd.sh 就会自动安装上vsftpd,只需要执行命令:useradd -d /home/wwwroot -s /sbin/nologin adminftp 添加上帐号指定好ftp帐号的根目录,再执行:passwd adminftp 设置上密码,登录就可以了。
  • 虚拟主机管理

  • 1、添加虚拟主机,执行如下命令:/root/vhost.sh 根据提示输入要绑定的域名,回车,如果需要添加更多的域名,输入y,再输入要另外绑定的域名,多个域名可以用空格隔开。再输入域名绑定的目录(绝对目录, 如/home/wwwroot/lnmp,如果不填默认是/home/wwwroot/绑定的域名),再选择是否添加伪静态规则,默认已经有了 Discuz、Wordpress、Sablog、emlog、dabr,可直接输入以上名称即可,如果需要添加自定义伪静态规则,直接输入一个想要的名 字,程序会自动创建伪静态文件,直接在/usr/local/nginx/conf/你自定义的伪静态名字.conf 里面添加伪静态规则就行。接下来会提示是否需要启用日志功能,一般情况下不需要启动,直接输入n就行,如需启动,输入y,再输入要定义的日志文件名字,回 车就会自动添加虚拟主机。

  • 2、状态管理及相关管理页面
    LNMP状态管理: /root/lnmp {start|stop|reload|restart|kill|status}
    PureFTPd状态管理 /root/pureftpd {start|stop|restart|kill|status}
    phpinfo : http://前面输入的域名或IP/phpinfo.php
    phpMyAdmin : http://前面输入的域名或IP/phpmyadmin/
    探针 : http://前面输入的域名或IP/p.php
    MySQL root密码:如果不输入直接回车为root,否则为你输入的密码。

    LNMP相关目录:
    mysql : /usr/local/mysql
    php : /usr/local/php
    nginx : /usr/local/nginx
    网站目录: /home/wwwroot
  • 注:已经在DiaHostingPhotonVPS(感谢提供测试VPS)、RasHostVPSYOU、VPS.net、breezehostRapidxen 及几位lnmp网友提供的VPS上的CentOS 32/64bit、Debian 4/5 32/64bit上测试成功。同时感谢提供测试VPS的商家及网友。

    来源:http://lnmp.org/install.html

    Tags: nginx, php, linux, vps

    Nginx针对IP和目录限速

    一般来说,限速这东西仅限于FTP,可以给FTP用户进行限速,但,如果你没有FTP,仅有HTTP的情况下如何呢?上次vampire演示过一段,同时还根据URL来读取文件的区块。事实上我们的需要没有那么复杂,向tom zheng博客上的这段就够我们用了。不是吗?再者,现在用nginx的机器应该很多了吧(我没有用,因为,我不可能为线上每个用户都去设置一遍他们的rewrite规则。只能将就一下了。)

    原文来自:http://zys.8800.org/index.php/archives/322

    nginx可以通过HTTPLimitZoneModule和HTTPCoreModule两个目录来限速。

    示例:

    limit_zone one $binary_remote_addr 10m;

    location / {
            limit_conn one 1;
            limit_rate 100k;
    }

    说明:

    limit_zone,是针对每个IP定义一个存储session状态的容器。这个示例中定义了一个10m的容器,按照32bytes/session,可以处理320000个session。

    然后针对 /目录进行设定。

    limit_conn one 1;  是限制每个IP只能发起一个连接。

    limit_rate 100k;    是对每个连接限速100k. 注意,这里是对连接限速,而不是对IP限速。如果一个IP允许两个并发连接,那么这个IP就是限速limit_rate x 2。

    关于limit_zone的原始文档,请见 http://wiki.nginx.org/NginxHttpLimitZoneModule

    关于limit_rate和limit_conn的原始文档,请见 http://wiki.nginx.org/NginxHttpCoreModule

    Tags: nginx, 限速

    Records:11123