文章标签 ‘nginx’

发送X-Accel-Redirect头实现直接定位成静态下载
$root_path = ‘/web/www’; //网站根目录
$file_path = ‘/data/t.txt’;  //文件路径
//发送下载的头信息
header(”Content-type: application/x-octet-stream”);
header(”Accept-Ranges: bytes”);
header(”Content-Disposition: attachment; filename=”.basename($file_path));
header(”Content-Length: “.filesize($root_path.$file_path));
//发送文件定位,是相对网站目录的路径
header(”X-Accel-Redirect: “.$file_path);

2009年5月23日02:43 | 没有评论
分类: 技术备案
标签: ,

实在厌倦了apache的臃肿,打算彻底投奔nginx的怀抱了。
编译,安装,迁移,一切都很顺利 ,最后一步在迁移svn的时候卡住了。
把nginx作为subversion的前端webserver居然目前没有解决方案……
搞了一个晚上,最终还是采取了proxy的办法,把发向nginx的svn请求转到apache上去了 ,哎。
为啥nginx没有这方面的解决方案,也大概查了个水落石出。因为这方面中文资料实在是少,让我费了颇多的周折,
现在就明明白白的说一下吧。
在nginx.net的Mailing list里,nginx的作者Igor Sysoev说了,支持SVN需要有三个东西
1) full WebDAV support,
2) DeltaV support,
3) SVN repo format support.
而在nginx里的NginxHttpDavModule,仅仅对以上三项中的第一项WebDAV有了初步的支持(目前来看Igor Sysoev并没有升级的想法),对于几个高级的WebDAV操作(比如OPTIONS、PROPFIND)并不支持,而这些操作,恰恰是SVN所必须的。而剩下的两项,更是一点支持都没。
所以,就目前来说,想单纯的nginx+subversion,基本上是不可能的。
在刚开始研究这个问题的时候,并不知道除了WebDAV还必须要有其他两个东西。所以满世界找nginx上WebDAV的解决方案,以为搞定这个,就万事大吉了。别说,还真让我在一个老外的博客上给找着一个。这家伙的方法很巧妙,他用通过查阅WebDAV的RFC文档,将绝大多数NginxHttpDavModule不支持的操作用PHP代码实现了,并且通过配置nginx,根据header信息把这些请求重定向到了这个PHP程序。这是这篇博客的地址,有志于自己动手解决这个问题的人,可以参考一下:)
最后感叹一下,为什么计算机方面的问题,总是能在国外的网站和MaillingList找到答案呢?是中国人都不会么?还是这些问题只有我这一个中国人遇到了?

2009年4月1日02:42 | 1 条评论
分类: 技术备案

最近要为公司搭建新的开发环境,打算舍弃用了n年的apache,换换口味,装个nginx试试。
在网上找了很多文档,没有一个能让我顺利安装完成的。还是自己来整理整理吧……
1,Install Pcre
来这里获取Pcre的最新版本
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
#tar -zxf pcre-7.8.tar.gz
#cd pcre-7.8
#./configure
#make
#make install
2. Install Nginx(http://www.nginx.net/)
#tar -zxf nginx-0.6.32.tar.gz
#cd nginx-0.6.32
#./configure –prefix=/usr/local/nginx-0.6.32
#make
#make install
3. Install PHP with php-fpm (http://www.php.net/)
nginx是通过fastcgi来支持PHP的,使用php-fpm补丁是一个比较方便的管理fastcgi进程的解决方案。
比通过脚本或是lighttpd的spawn模块要简单的多。
下载好PHP后,来这里获取与PHP版本相对应的php-fpm补丁:http://php-fpm.anight.org/
#tar -zxf php-5.2.6.tar.gz
#cd php-5.2.6
#zcat ../php-5.2.6-fpm-0.5.8.diff.gz | patch -p1  #为PHP打补丁
#./configure –prefix=/usr/local/php-5.2.6 –with-sqlite=shared –enable-fastcgi –enable-fpm
#make
#make install
注:PHP的其他模块(如mysql、gd等)请按需自己配置
#cp php.ini-recommended /usr/local/php-5.2.6/lib/php.ini
修改php.ini
cgi.fix_pathinfo=1
4. Configuring
A. 配置nginx,在/usr/local/nginx-0.6.32/conf目录下新建名为php_fcgi.conf的文件,内容如下:
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
修改nginx.conf文件,在需要支持PHP的虚拟主机配置中,加入如下一行:
include php_fcgi.conf;
B. 配置php-fpm模块,编辑/usr/local/php-5.2.6/etc/php-fpm.conf文件
找到“Unix user of processes”和“Unix group of processes”两段,将前面注释去掉,并将值改为与nginx配置相同的用户和组。如下:
Unix user of processes
<value [...]

2008年9月19日15:15 | 5 条评论
分类: 技术备案