存档

‘nginx’ 分类的存档

iphone 流媒体服务

2011年4月20日 eric 7 条评论

iPhone HTTP Streaming with FFMpeg and an Open Source Segmenter

由于项目需要,需要搭建一个手机流媒体服务器,之前有做过流媒体服务器,不过都是PC客户端的•首选的是 flash media server。但是这次客户端是手机,手机客户端的种类很多,Nokia,iphone, android,他们没有一个支持 rtmp协议的而且支持的格式也很少,后来查询google,得知 android 支持rtsp,又是一路的 google 后来锁定在 live555 和 feng stream server,经过试验•用VLC 播放是可以的,在android上rtsp播放就是个废物不给力,也许是我研究的不够透彻,也在网上看其他网站的手机视频,时光网直接给的是http协议mp4•没有做任何处理•这样有一个弊端就是客户端与服务端建立连接一直下载视频,占用服务器带宽和资源,好处是解决各个手机客户端的不兼容问题。就在准备直接使用http 协议播放mp4的时候,有同事提到视频切片,就在google 上搜索,搜索到 一篇老外的文章,通过ffmpeg把视频转码,转成TS流文件,而后通过开源的 segmenter 把流文件切割成几个TS流文件,生成一个播放列表维护切成的散文件。经过试验,效果不错•该作者的 ffmpeg 参数是专门真多 iphone做了优化•在vlc上播放的效果远不如iphone上的效果~下面我把我安装过程与遇到的一些小问题都记录下来•

nginx的Split Clients模块

2011年4月1日 eric 4 条评论

在nginx 官网上浏览这些日子nginx 的更新,看到 更新了Split Clients 的模块·然后就看了一下·发现官网wiki的几点问题·写帮助文档的人有些不负责,我编译安装后,按照wiki的方法配置nginx.conf 报错。 官网wiki : http://wiki.nginx.org/HttpSplitClientsModule http { split-clients “${remote-addr}AAA” $variant { 0.5% .one; 2.0% .two; – “”; } server { location / { index index${variant}.html; 我实际的代码是: http { split_clients “${remote_addr}AAA” $variant { 0.5% .one; 2% .two; 3% .eric; 4% .yang; 50% .thr; * “”; } server { location / { [...]

分类: nginx 标签: , ,

更新check_nginx插件

2011年1月25日 eric 2 条评论

新增功能:
增加 BasicAuth 认证功能,
去掉了显示:serveraccepts handled requests
只显示主要的: ActiveConn reading writing waiting
优化代码可以省去不需要的参数。

源码:

# -*- coding: utf-8 -*-
#!/usr/bin/python
# check_nginx is a Nagios to monitor nginx statu
# my blog: http://www.nginxs.com
# The version is 1.0.1
# MSN: yangzi2008@126.com

import string
import urllib2
import getopt
import sys

def usage():
   print """check_nginx is a Nagios to monitor nginx status
   Usage:

   check_nginx [-h|--help][-u|--url][-p|--path][-w|--warning][-c|--critical]

   Options:
          --help|-h)
分类: nginx 标签: ,

转老外一篇NGINX 防DDOS配置

2011年1月19日 eric 17 条评论

FreeBSD, network card: Intel fxp, port: 100Мбит, polling, http accept-filter. in sysctl: sysctl kern.maxfiles=90000 sysctl kern.maxfilesperproc=80000 sysctl net.inet.tcp.blackhole=2 sysctl net.inet.udp.blackhole=1 sysctl kern.polling.burst_max=1000 sysctl kern.polling.each_burst=50 sysctl kern.ipc.somaxconn=32768 sysctl net.inet.tcp.msl=3000 sysctl net.inet.tcp.maxtcptw=40960 sysctl net.inet.tcp.nolocaltimewait=1 sysctl net.inet.ip.portrange.first=1024 sysctl net.inet.ip.portrange.last=65535 sysctl net.inet.ip.portrange.randomized=0 in nginx configuration: worker_processes 1; worker_rlimit_nofile 80000; events { worker_connections 50000; } server_tokens off; log_format IP `$remote_addr’; [...]

分类: nginx 标签: , ,

nginx 错误日志分析

2011年1月11日 eric 15 条评论

nginx 错误日志: 转帖: 错误 accept() failed (53: Software caused connection abort) [error] 25361#0: accept() failed (53: Software caused connection abort) while accepting new connection on 0.0.0.0:80 [error] 25361#0: accept() failed (53: Software caused connection abort) while accepting new connection on 0.0.0.0:80 [error] 25365#0: accept() failed (53: Software caused connection abort) while accepting new connection on [...]

分类: nginx 标签: , ,

FastDFS nginx 模块 php_client使用。

2010年12月7日 eric 1 条评论

由于本人对PHP了解有限,读起 README来有些慢·不过还是看明白了点·先写下上传,和得到文件的fileid,同理也可以下载·呵呵。其实很简单函数有说明的。接上文的安装完毕后,在nginx 上编译php-fpm,让其支持php. 1.编译php-fpm nginx $> wget http://cn2.php.net/get/php-5.2.14.tar.bz2/from/cn.php.net/mirror nginx $> wget http://php-fpm.org/downloads/php-5.2.14-fpm-0.5.14.diff.gz nginx $> tar jxvf php-5.2.14.tar.bz2 nginx $> gzip -cd php-5.2.14-fpm-0.5.14.diff.gz | patch -d php-5.2.14 -p1 nginx $> cd php-5.2.14 nginx $> ./configure –prefix=/usr/local/php –enable-fastcgi –enable-fpm –enable-force-cgi-redirect nginx $> make nginx $> make install nginx $> cp php.ini-dist /usr/local/php/etc/ 2.编译fastdfs_client.so php扩展模块 nginx $> cd [...]

分类: nginx 标签: , ,

VPS nginx+php-fpm+apc优化

2010年9月29日 eric 4 条评论

我的VPS,内存是 512的,开始的时候呢php-fpm 开的进程是20个,后来加上APC,重启之后访问速度蛮快的,但没有过几天,访问blog的时候,感觉相应速度比较慢,就连访问纯静态的页面也是,登录VPS,键入top命令查看,显示 Mem 还是有 free的,但是 Swap used 也是有波动的,肯定是内存的问题,之前我设置的 APC 占用 64的内存的,打开 apc的监控页面,发现 Used 很少,Free很多,因为我只是一个blog没有多少动态页面需要缓存的。所以分配这么内存是浪费的。至于php-fpm的进程也没有必要20个进程,只要优化的合理 12个进程就可以(访问量也小么),好了,现在开始优化

shell $> vim /usr/local/php/etc/php-fpm.conf

<value name="max_children">20</value>

改为

<value name="max_children">12</value>
shell $> vim /usr/local/php/etc/php.ini
添加
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
分类: nginx 标签: , , ,

再次优化NGINX+php-fpm上传

2010年9月6日 eric 6 条评论

上次写了一篇nginx+php-fpm优化上传,一位博友留言介绍了,第三方nginx upload module

http://www.grid.net.ru/nginx/upload.en.html

看了一下,功能蛮强大的,所以就记录下来·基本没什么变化,在原有的例子上稍加了下修改,加了一个限速功能。
在 0.8.X 版本上编译出出错,他官方也有写:

For nginx versions other than 0.7.44-51

但是我在最新版本 nginx-0.7.67.tar.gz 编译也没问题。

下载nginx:wget http://www.nginx.org/download/nginx-0.7.67.tar.gz
下载模块:wget http://www.grid.net.ru/nginx/download/nginx_upload_module-2.0.12.tar.gz

1.下载编译安装nginx_upload_module

nginx $> tar zxvf nginx-0.7.67.tar.gz
nginx $> tar zxvf nginx_upload_module-2.0.12.tar.gz
nginx $> cd nginx-0.7.67
#关掉不需要的模块,节省资源开支俗话说越简洁越稳定~
nginx $> ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --without-http_memcached_module --without-http_empty_gif_module --without-mail_pop3_module  --without-mail_imap_module --without-mail_smtp_module --add-module=/root/nginx_upload_module-2.0.12
nginx $> make
nginx $> make install
分类: nginx 标签: , , ,

优化nginx+fastcgi上传

2010年8月6日 eric 138 条评论

由于公司网站的项目要用到用户上传20M左右的文件,经过测试发现,上传的时候php-fpm单个进程占用CPU利用率大而长,上传速度也不是很理想,如果是多个人上传,效果就会更糟糕。在看nginx官网网站的时候。看到nginx支持POST,原理是这样的,POST到nginx的产生一个临时文件,nginx接受到数据在转移到FastCGI,这样多了一次复制过程和内存开销,比较浪费。但是对于上传大文件来说速度有明显改善。但是光nginx支持不够,还需要php-fpm的支持。 添加这个功能需要修改nginx配置文件: http { ……. 添加如下: client_body_in_file_only clean; client_body_temp_path /dev/shm 1 2; fastcgi_param REQUEST_BODY_FILE $request_body_file; … } 最好使用内存文件系统 /dev/shm 这样减少对磁盘的读写,减少了 磁盘 I/O,这样大大的优化了NGINX上传速度。

分类: nginx 标签: , ,

nginx模块referer_module防盗链

2010年7月15日 eric 9 条评论

你的站点是不是图片、视频比较多,本身流量就很大,再有大量的盗链,很容易就把服务器击垮的,所以web站点防盗链很重要的。nginx referer_module 模块可以简单来防止盗链。

模块说明:
This module makes it possible to block access to the site with the incorrect values of line “Referer” in the request header.

Keep in mind that it is easy to spoof this header; therefore, the purpose of using of this module consists not in 100% blocking of these requests, but in the blocking of the mass flow of requests, made from typical browsers. Also, consider that the typical browser does not always provide a “Referer” header, even for correct requests.

Example

location /photos/ {
valid_referers none blocked www.mydomain.com mydomain.com;

if ($invalid_referer) {
return 403;
}
}

分类: nginx 标签: ,