nginx在fastcgi模块中转发真实的后端IP

网上流传着一份nginx fastcgi_params,大家在nginx下用fastcgi跑PHP大多用的是这个版本,但是这个版本有2个问题,1是默认的buffersize太小,php一旦输出比较多的error_log就挂了,2是没有转发HTTP_X_FORWARD_FOR和HTTP_CLIENT_IP这两个变量.我的服务器是在lighttpd后面跑的nginx+php,wordpress收不到正确的IP,于是垃圾评论无法正常工作.现在我改了一份更合用的版本,提供出来.
fastcgi_buffers 8 128k;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;

fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;

fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;

fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param HTTP_X_FORWARDED_FOR $http_x_forwarded_for;
fastcgi_param HTTP_CLIENT_IP $http_client_ip;

# PHP only, required if PHP was built with –enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;

fastcgi_buffer_size 256k;
#fastcgi_buffers 4 256k;

fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
#fastcgi_read_timeout 300;

fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;

我倒腾过的小项目

有好几个都没有写明是何种license,因为用的人少~~~

acfilter:
项目主页:http://github.com/xurenlu/acfilter
是一个PHP扩展,您需要设定一个词库,然后检测任何一篇文章看它包含了词库中的哪些词.
应用场景:
禁词屏蔽;SEO伪原创;当词库足够大时,可以成为一个简单的分词工具;准备一系列分类的词库,可以实现文本分类和关键词提取;

supermini:
项目主页:http://github.com/xurenlu/supermini
简称SM,是一个极小的PHP框架,帮助你偷懒,不到1000行代码,帮你完成自动建数据库,简单的scaffold功能,以及一个简单极致的mvc实现.

wpra:
项目主页:http://github.com/xurenlu/wpra
是一个wordpress扩展;利用了http://codeany.com/提供的API来完成相关文章的功能.提升SEO效果.

flare-manager
项目主页:http://github.com/xurenlu/flare-manger/
这是web界面的flare的管理器,列在flare的官方网站上.你可以将flare理解为一个支持持久化的memcache实现.

python-scws
项目主页:http://github.com/xurenlu/python-scws
python-scws是scws的Python扩展.scws是一个中文分词实现.

slowphp
项目主页是:http://github.com/xurenlu/slowphp
是一个PHP扩展,用来实现记录php中执行特别费时的脚本地址的工具.可以设定为执行时间超过一定值时触发记录动作,也可以是有一定的概率触发,也可以是当锁文件存在时触发.

PHPPOD:
项目主页是:http://github.com/xurenlu/phppod
是一个dnspod的客户端,与其他客户端不同的时,它不是一个windows下的有GUI界面的客户端,而是PHP实现的,在console下执行,适于在linux下使用,可以和拨号程序集成,也可以在crontab中调用.

hyer:
项目主页是:http://githbu.com/xurenlu/hyer/
是一个python写的爬虫库,已经停止更新.

A mc_list patch for tokyo tyrant
项目主页是:http://github.com/xurenlu/mc_list_patch_4_tokyotyrant
将tokyotyrant做了hack,加上了对list命令的支持.客户端也需要做改动,我已经提供了php版的修改.

sshpass:
项目主页是:http://github.com/xurenlu/sshpass
是一个帮助登录ssh的小工具.假设您要登录的ssh的密码是123456,可以这样登录:
sshpass -p 123456 ssh user@you.site.com

PHP中的一些language construct

先来段定义:

A language construct is a syntactically allowable part of a program that may be formed from one or more lexical tokens in accordance with the rules of a programming language.
The term Language Constructs is often used as a synonym for control structure, and should not be confused with a function.

PHP中的language construct:
include, require,isset, print, echo, array , list,empty
include和require 比较常见,例如这一段:这里有三个文章件,b.php包含了c.php和d.php

#b.php:

#c.php:

#d.php


运行一下b.php:

file c.php
string(8) “return c”
file d.php
string(8) “return d”

证明include 和require都是有返回值的.但是从语法上看,include,require都不是函数写法.

Array不是函数,这就比较好理解了,你见过哪个函数用function(“var1″=>”var2”)这种写法的?
值的注意的是,empty也不是函数,看这么一段代码:

some_var);
var_dump(empty($myobject->some_var));

运行它,得到结果:

string(17) “value of some_var”
bool(true)

看到了吗,虽然你能取到myobject->some_var这个值,但是用empty来判断时,却判断为空.

稍显寒酸的一个PHP框架:supermin

我曾经很长时间不搞什么PHP框架(框架神马的最讨人厌鸟)
我身边很多哥们,都是PHP大牛,所以,每人都写了自己的PHP框架,所以,其实我用不管谁的框架看上去都挺得罪人的,嗯,于是我只能是啥框架也不用了.
不过前一阵团队某个人自己引入了一个框架,然后做完了一个项目,接下来就拍拍屁股走人鸟~~
于是我总结了几个规律,我称之为徐氏定律:

如果一个项目只有一个人全盘负责,这个人一定会离职;
如果一个项目你不盯着,一定会出问题;
如果让一个人自己负责一个东西,不搞个需求评审过一下,他肯定会假想一堆需求;
如果一个程序员去设计一个框架,他肯定想着跨平台,多引擎支持,肯定想着做到老少咸宜男女通吃.

于是我决定写一个真正够用的好用的框架,在公司内部强行推介一下,你可以不用框架,但是如果你要用的话必须用我的框架;没有经过一大堆同事的评审和我的许可,你不可以使用自己写的框架,尤其是,我们基本没有工夫让谁写个牛B的框架….
嗯,于是回家我就开始搞,用了两个晚上,加起来一共不到20个小时的时间,我的超小精框架出厂了,我一向猥琐,嗯,也给起了个猥琐的名字:SM.嗯,全称是:supermini. 几百行代码而已,但是我觉得已经够用了,主要封装两个东西,一个是数据库访问,可以帮您连数据库和拼凑sql语句,另一个东西是一个Form表单生成工具.
这是一个很有特色的框架,嗯,其实连框架都称不上,就一个600来行的小lib而已,都还没有在生产环境上进行过实验,所以暂时不放代码出来.不过这个小框架包含了我对PHP的理解,嗯,每一种框架都是作者的程序哲学的体现.先来个PPT介绍一下基本逻辑.这个PPT是HTML5做的,请用chrome观看.
详情请参见:”迷你PHP框架supermini简介”.