在nginx上运行cgi程序

我们用到的很多开源程序比如mailman, nagios等等,都有WEB端管理界面。在那个Apache一家独大的年代,这个问题可以很好解决,因为apache本身可以运行cgi程序。但随着nginx服务器的大规模应用,而恰好nginx又没有cgi模块,所以我们不得不采用一些变通的手段来解决它。

在网上广为流传的解决方法是一个老外写的perl脚本,但这个脚本本身有很多问题,而且需要在后台启动一个守护进程,本人对用perl写的网络服务守护进程的稳定性很怀疑,在看了它的代码后,发现用PHP即可很好的解决这个问题。

首先我们要明白的是CGI其实本质上就是一个普通的二进制程序,你可以在后台直接运行它。而服务器要做的事就是将WEB传递的变量作为参数传递给这个程序并执行,而将执行返回的结果显示到页面上。

明白了这个道理,我们就可以开始着手解决这个问题了。其过程无非就是将PHP作为一个proxy,使其运行指定的程序,并把程序输出结果echo出来。

那么首先第一步,我们就需要把原来的cgi请求全部转发到指定的php上,这一点在nginx里用rewrite就可以很简单的做到。我们把这个PHP脚本命名为cgi.php,把它随便放到一个你认为合适的位置,然后用rewrite将后缀为cgi的请求都转发到cgi.php上。以下为参考的配置格式

Read the rest of this entry »

Posted at Jul 22nd | 2 comments | Filed Under: 编程开发 read on

为诸位离线控准备的Google Code同步插件

此插件利用Google Code的SVN提醒功能,实现自动将Google Code上的文章同步到typecho的blog中。它的使用方法非常简单

svn.jpg

准备工作

  1. 首先你要在Google Code上建立一个项目, 并选择SVN作为版本管理器
  2. 进入这个项目的administer面板的source项,浏览器拉到最下面,找到"Post-Commit web hooks"项,并填上"http://你的博客地址/action/googlecode-svn"
  3. 在它下面google用粗体标出了一个secret key,把它复制到粘贴板里
  4. 在Typecho后台激活此插件, 并把secret key填写到相应选项
  5. 填写SVN目录的时候请注意,如果你不想把blog放到根目录,你可以填写一个已经在SVN中建立好的子目录,比如"/trunk/blog"

Read the rest of this entry »

Posted at Jun 24th | 9 comments | Filed Under: 信息技术探讨 read on

About

Name:祁宁(Qi Ning)
MSN:qining-china#hotmail.com
G-talk:magike.net#gmail.com

Projects