<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>NGINX 中文站</title>
	<atom:link href="http://www.inginx.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.inginx.com</link>
	<description>NGINX安装,最新下载,配置,优化等</description>
	<lastBuildDate>Mon, 20 Feb 2012 00:39:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>nginx和squid配合搭建的web服务器前端系统</title>
		<link>http://www.inginx.com/nginx-squid-web/</link>
		<comments>http://www.inginx.com/nginx-squid-web/#comments</comments>
		<pubDate>Mon, 20 Feb 2012 00:39:08 +0000</pubDate>
		<dc:creator>iNginx</dc:creator>
				<category><![CDATA[Nginx 成功分享]]></category>

		<guid isPermaLink="false">http://www.inginx.com/?p=194</guid>
		<description><![CDATA[这个架构是目前我个人觉得比较稳妥并且最方便的架构，易于多数人接受：

前端的lvs和squid，按照安装方法，把epoll打开，配置文件照搬，基本上问题不多。
这个架构和app_squid架构的区别，也是关键点就是：加入了一级中层代理，中层代理的好处实在太多了：
1、gzip压缩
压缩可以通过nginx做，这样，后台应用服务器不管是apache、resin、lighttpd甚至iis或其他古怪服务器，都不用考虑压缩的功能问题。
2、负载均衡和故障屏蔽
nginx可以作为负载均衡代理使用，并有故障屏蔽功能，这样，根据目录甚至一个正则表达式来制定负载均衡策略变成了小case。
3、方便的运维管理，在各种情况下可以灵活制订方案。
例如，如果有人用轻量级的ddos穿透squid进行攻击，可以在中层代理想办法处理掉；访问量和后台负载突变时，可以随时把一个域名或一个目录的请求扔入二级cache服务器；可以很容易地控制no-cache和expires等header。等等功能。。。
4、权限清晰
这台机器就是不写程序的维护人员负责，程序员一般不需要管理这台机器，这样假如出现故障，很容易能找到正确的人。
对于应用服务器和数据库服务器，最好是从维护人员的视线中消失，我的目标是，这些服务只要能跑得起来就可以了，其它的事情全部可以在外部处理掉。
]]></description>
			<content:encoded><![CDATA[<p>这个架构是目前我个人觉得比较稳妥并且最方便的架构，易于多数人接受：</p>
<p><a href="http://www.oschina.net/uploads/img/201009/13074653_U0jx.png" target="_blank"><img src="http://www.oschina.net/uploads/img/201009/13074653_U0jx.png" alt="" /></a></p>
<p>前端的lvs和squid，按照安装方法，把epoll打开，配置文件照搬，基本上问题不多。</p>
<p>这个架构和app_squid架构的区别，也是关键点就是：加入了一级中层代理，中层代理的好处实在太多了：</p>
<p>1、gzip压缩</p>
<p>压缩可以通过nginx做，这样，后台应用服务器不管是apache、resin、lighttpd甚至iis或其他古怪服务器，都不用考虑压缩的功能问题。</p>
<p>2、负载均衡和故障屏蔽</p>
<p>nginx可以作为负载均衡代理使用，并有故障屏蔽功能，这样，根据目录甚至一个正则表达式来制定负载均衡策略变成了小case。</p>
<p>3、方便的运维管理，在各种情况下可以灵活制订方案。</p>
<p>例如，如果有人用轻量级的ddos穿透squid进行攻击，可以在中层代理想办法处理掉；访问量和后台负载突变时，可以随时把一个域名或一个目录的请求扔入二级cache服务器；可以很容易地控制no-cache和expires等header。等等功能。。。</p>
<p>4、权限清晰</p>
<p>这台机器就是不写程序的维护人员负责，程序员一般不需要管理这台机器，这样假如出现故障，很容易能找到正确的人。</p>
<p>对于应用服务器和数据库服务器，最好是从维护人员的视线中消失，我的目标是，这些服务只要能跑得起来就可以了，其它的事情全部可以在外部处理掉。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.inginx.com/nginx-squid-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nginx中文手册下载</title>
		<link>http://www.inginx.com/nginx-manual-download/</link>
		<comments>http://www.inginx.com/nginx-manual-download/#comments</comments>
		<pubDate>Mon, 20 Feb 2012 00:37:31 +0000</pubDate>
		<dc:creator>iNginx</dc:creator>
				<category><![CDATA[Nginx 最新下载]]></category>

		<guid isPermaLink="false">http://www.inginx.com/?p=191</guid>
		<description><![CDATA[Nginx 常见应用技术指南[Nginx Tips] 第二版
作者:NetSeek http://www.linuxtone.org (IT运维专家网&#124;集群架构&#124;性能调优)
欢迎转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明.
首发时间: 2008-11-25 更新时间:2009-1-14
目 录
一、 Nginx 基础知识
二、 Nginx 安装及调试
三、 Nginx Rewrite
四、 Nginx Redirect
五、 Nginx 目录自动加斜线:
六、 Nginx Location
七、 Nginx expires
八、 Nginx 防盗链
九、 Nginx 访问控制
十、 Nginx日志处理
十一、 Nginx Cache
十二、 [...]]]></description>
			<content:encoded><![CDATA[<p>Nginx 常见应用技术指南[Nginx Tips] 第二版</p>
<p>作者:NetSeek http://www.linuxtone.org (IT运维专家网|集群架构|性能调优)<br />
欢迎转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明.<br />
首发时间: 2008-11-25 更新时间:2009-1-14</p>
<p>目 录</p>
<p>一、 Nginx 基础知识<br />
二、 Nginx 安装及调试<br />
三、 Nginx Rewrite<br />
四、 Nginx Redirect<br />
五、 Nginx 目录自动加斜线:<br />
六、 Nginx Location<br />
七、 Nginx expires<br />
八、 Nginx 防盗链<br />
九、 Nginx 访问控制<br />
十、 Nginx日志处理<br />
十一、 Nginx Cache<br />
十二、 Nginx 负载均衡<br />
十三、 Nginx简单优化<br />
十四、 如何构建高性能的LEMP环境<br />
十五、 Nginx服务监控<br />
十六、 常见问题与错误处理.<br />
十七、 相关资源下载</p>
<p>【前言】：</p>
<p>编写此技术指南在于推广普及NGINX在国内的使用，更方便的帮助大家了解和掌握NGINX<br />
的一些使用技巧。本指南很多技巧来自于网络和工作中或网络上朋友们问我的问题.在此对<br />
网络上愿意分享的朋友们表示感谢和致意！欢迎大家和我一起丰富本技术指南提出更好的建<br />
议！请朋友们关注: http://www.linuxtone.org 技术分享社区! 互想学习共同进步!</p>
<p><strong>一、 Nginx 基础知识</strong></p>
<p>1、简介<br />
Nginx (&#8220;engine x&#8221;) 是一个高性能的 HTTP 和 反向代理 服务器，也是一个 IMAP/POP3/SMTP 代理服<br />
务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的，它已经在该站点运行超<br />
过两年半了。Igor 将源代码以类BSD许可证的形式发布。尽管还是测试版，但是，Nginx 已经因为它的稳<br />
定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。</p>
<p>更多的请见官方wiki: http://wiki.codemongers.com/</p>
<p>2、 Nginx的优点<br />
nginx做为HTTP服务器，有以下几项基本特性：<br />
1) 处理静态文件，索引文件以及自动索引；打开文件描述符缓冲．<br />
2) 无缓存的反向代理加速，简单的负载均衡和容错．<br />
3) FastCGI，简单的负载均衡和容错．<br />
4) 模块化的结构。包括gzipping, byte ranges, chunked responses, 以及 SSI-filter等filter。<br />
如果由FastCGI或其它代理服务器处理单页中存在的多个SSI，则这项处理可以并行运行，而不<br />
需要相互等待。<br />
5) 支持SSL 和 TLS SNI．<br />
Nginx专为性能优化而开发，性能是其最重要的考量, 实现上非常注重效率 。它支持内核Poll模型，<br />
能经受高负载的考验, 有报告表明能支持高达 50,000 个并发连接数。</p>
<p>Nginx具有很高的稳定性。其它HTTP服务器，当遇到访问的峰值，或者有人恶意发起慢速连接时，<br />
也很可能会导致服务器物理内存耗尽频繁交换，失去响应，只能重启服务器。例如当前apache一旦上到<br />
200个以上进程，web响应速度就明显非常缓慢了。而Nginx采取了分阶段资源分配技术，使得它的CPU与<br />
内存占用率非常低。nginx官方表示保持10,000个没有活动的连接，它只占2.5M内存，所以类似DOS这<br />
样的攻击对nginx来说基本上是毫无用处的。就稳定性而言, nginx比lighthttpd更胜一筹。</p>
<p>Nginx支持热部署。它的启动特别容易, 并且几乎可以做到7*24不间断运行，即使运行数个月也不<br />
需要重新启动。你还能够在不间断服务的情况下，对软件版本进行进行升级。</p>
<p>Nginx采用master-slave模型, 能够充分利用SMP的优势，且能够减少工作进程在磁盘I/O的阻<br />
塞延迟。当采用select()/poll()调用时，还可以限制每个进程的连接数。</p>
<p>Nginx代码质量非常高，代码很规范， 手法成熟， 模块扩展也很容易。特别值得一提的是强大<br />
的Upstream与Filter链。 Upstream为诸如reverse proxy, 与其他服务器通信模块的编写奠定了很好的<br />
基础。而Filter链最酷的部分就是各个filter不必等待前一个filter执行完毕。它可以把前一个filter<br />
的输出做为当前filter的输入，这有点像Unix的管线。这意味着，一个模块可以开始压缩从后端服务器<br />
发送过来的请求，且可以在模块接收完后端服务器的整个请求之前把压缩流转向客户端。</p>
<p>Nginx采用了一些os提供的最新特性如对sendfile (Linux 2.2+)，accept-filter (FreeBSD<br />
4.1+)，TCP_DEFER_ACCEPT (Linux 2.4+) 的支持，从而大大提高了性能</p>
<p><strong>二、 Nginx 安装及调试</strong></p>
<p>1、Pcre 安装</p>
<p>./configure<br />
make &amp;&amp; make install<br />
cd ../</p>
<p>2. nginx 编译安装</p>
<p>/configure &#8211;user=www &#8211;group=www &#8211;prefix=/usr/local/nginx/ &#8211;with-http_stub_status_module<br />
&#8211;with-openssl=/usr/local/openssl</p>
<p>make &amp;&amp; make install</p>
<p>更详细的模块定制与安装请参照官方wiki.</p>
<p>3、Nginx 配置文件测试：</p>
<p># /usr/local/nginx/sbin/nginx -t //Debug 配置文件的关键命令需要重点撑握.</p>
<blockquote><p>2008/12/16 09:08:35 [info] 28412#0: the configuration file /usr/local/nginx/conf/nginx.conf<br />
syntax is ok<br />
2008/12/16 09:08:35 [info] 28412#0: the configuration file /usr/local/nginx/conf/nginx.conf was<br />
tested successfully</p></blockquote>
<p>3、 Nginx 启动：</p>
<p># /usr/local/nginx/sbin/nginx</p>
<p>4、 Nginx 配置文件修改重新加载：</p>
<p># kill -HUP `cat /usr/local/nginx/logs/nginx.pid `</p>
<p>三、 Nginx Rewrite</p>
<p>1. Nginx Rewrite 基本标记(flags)<br />
last &#8211; 基本上都用这个Flag。<br />
※相当于Apache里的[L]标记，表示完成rewrite，不再匹配后面的规则<br />
break &#8211; 中止Rewirte，不再继续匹配<br />
redirect &#8211; 返回临时重定向的HTTP状态302<br />
permanent &#8211; 返回永久重定向的HTTP状态301<br />
※原有的url支持正则 重写的url不支持正则</p>
<p>2. 正则表达式匹配，其中：<br />
<strong>~ </strong>为区分大小写匹配<br />
<strong>~*</strong> 为不区分大小写匹配<br />
<strong>!~</strong> 和 <strong>!~* </strong>分别为区分大小写不匹配及不区分大小写不匹配</p>
<p>3. 文件及目录匹配，其中：<br />
<strong>-f </strong>和 <strong>!-f</strong> 用来判断是否存在文件<br />
<strong>-d</strong> 和 <strong>!-d</strong> 用来判断是否存在目录<br />
<strong>-e</strong> 和 <strong>!-e</strong> 用来判断是否存在文件或目录<br />
<strong>-x </strong>和 <strong>!-x</strong> 用来判断文件是否可执行</p>
<p>3. Nginx 的一些可用的全局变量，可用做条件判断：</p>
<p>$args<br />
$content_length<br />
$content_type<br />
$document_root<br />
$document_uri<br />
$host<br />
$http_user_agent<br />
$http_cookie<br />
$limit_rate<br />
$request_body_file<br />
$request_method<br />
$remote_addr<br />
$remote_port<br />
$remote_user<br />
$request_filename<br />
$request_uri<br />
$query_string<br />
$scheme<br />
$server_protocol<br />
$server_addr<br />
$server_name<br />
$server_port<br />
$uri</p>
<p>四、 Nginx Redirect</p>
<p>将所有linuxtone.org与netseek.linuxtone.org域名全部自跳转到http://www.linuxtone.org</p>
<p>server {<br />
    listen 80;<br />
    server_name linuxtone.org netseek.linuxtone.org;<br />
    index index.html index.php;<br />
    root /data/www/wwwroot;<br />
    if ($host !~ &#8220;^www\.linxtone\.org$&#8221;) {<br />
        rewrite ^(.*) http://www.linuxtone.org$1 redirect;<br />
    }<br />
    &#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;<br />
}</p>
<p>五、 Nginx 目录自动加斜线:</p>
<p>if (-d $request_filename){<br />
    rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;<br />
}</p>
<p>六、 Nginx Location</p>
<p>1．基本语法:[和上面rewrite正则匹配语法基本一致]<br />
location [=|~|~*|^~] /uri/ { … }<br />
<strong>~</strong> 为区分大小写匹配<br />
<strong>~*</strong> 为不区分大小写匹配<br />
<strong>!~</strong> 和 <strong>!~*</strong> 分别为区分大小写不匹配及不区分大小写不匹配</p>
<p>示例1:</p>
<p>location = / {<br />
    # matches the query / only.<br />
    # 只匹配 / 查询。<br />
}</p>
<p>匹配任何查询，因为所有请求都已 / 开头。但是正则表达式规则和长的块规则将被优先和查询匹配</p>
<p>示例2:</p>
<p>location ^~ /images/ {<br />
    # matches any query beginning with /images/ and halts searching,<br />
    # so regular expressions will not be checked.<br />
    # 匹配任何以 /images/ 开头的任何查询并且停止搜索。任何正则表达式将不会被测试。<br />
}</p>
<p>示例3:</p>
<p>location ~* \.(gif|jpg|jpeg)$ {<br />
    # matches any request ending in gif, jpg, or jpeg. However, all<br />
    # requests to the /images/ directory will be handled by<br />
    # 匹配任何以 gif、jpg 或 jpeg 结尾的请求。<br />
}</p>
<p>七、 Nginx expires</p>
<p>1．根据文件类型判断，添加expires</p>
<p># Add expires header for static content<br />
location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {<br />
    if (-f $request_filename) {<br />
        root /data/www/wwwroot/bbs;<br />
        expires 1d;<br />
        break;<br />
    }<br />
}</p>
<p>2、根据某个目录判断，添加expires</p>
<p># serve static files<br />
location ~ ^/(images|javascript|js|css|flash|media|static)/ {<br />
    root /data/www/wwwroot/down;<br />
    expires 30d;<br />
}</p>
<p>八、 Nginx 防盗链</p>
<p>1. 针对不同的文件类型</p>
<p>#Preventing hot linking of images and other file types<br />
location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip)$ {<br />
    valid_referers none blocked server_names *.linuxtone.org linuxtone.org http://localhost baidu.com;<br />
    if ($invalid_referer) {<br />
        rewrite ^/ http://www.linuxtone.org/images/default/logo.gif;<br />
        # return 403;<br />
    }<br />
}</p>
<p>2. 针对不同的目录</p>
<p>location /img/ {<br />
    root /data/www/wwwroot/bbs/img/;<br />
    valid_referers none blocked server_names *.linuxtone.org http://localhost baidu.com;<br />
    if ($invalid_referer) {<br />
        rewrite ^/ http://www.linuxtone.org/images/default/logo.gif;<br />
        #return 403;<br />
    }<br />
}</p>
<p>3. 同实现防盗链和expires的方法</p>
<p>#Preventing hot linking of images and other file types<br />
location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip)$ {<br />
    valid_referers none blocked server_names *.linuxtone.org linuxtone.org http://localhost ;<br />
    if ($invalid_referer) {<br />
        rewrite ^/ http://www.linuxtone.org/images/default/logo.gif;<br />
    }<br />
    access_log off;<br />
    root /data/www/wwwroot/bbs;<br />
    expires 1d;<br />
    break;<br />
}</p>
<p>九、 Nginx 访问控制</p>
<p>1. Nginx 身份证验证</p>
<p>#cd /usr/local/nginx/conf<br />
#mkdir htpasswd<br />
/usr/local/apache2/bin/htpasswd -c /usr/local/nginx/conf/htpasswd/tongji linuxtone</p>
<p>#添加用户名为linuxtone<br />
New password: (此处输入你的密码)<br />
Re-type new password: (再次输入你的密码)<br />
Adding password for user</p>
<p>http://count.linuxtone.org/tongji/data/index.html(目录存在/data/www/wwwroot/tongji/data/目录</p>
<p>下)</p>
<p>将下段配置放到虚拟主机目录，当访问http://count.linuxtone/tongji/即提示要密验证:</p>
<p>location ~ ^/(tongji)/ {<br />
    root /data/www/wwwroot/count;<br />
    auth_basic &#8220;LT-COUNT-TongJi&#8221;;<br />
    auth_basic_user_file /usr/local/nginx/conf/htpasswd/tongji;<br />
}</p>
<p>2. Nginx 禁止访问某类型的文件.</p>
<p>如，Nginx下禁止访问*.txt文件，配置方法如下.</p>
<p>location ~* \.(txt|doc)$ {<br />
    if (-f $request_filename) {<br />
        root /data/www/wwwroot/linuxtone/test;<br />
        #rewrite …..可以重定向到某个URL<br />
        break;<br />
    }<br />
}</p>
<p>方法2:</p>
<p>location ~* \.(txt|doc)${<br />
    root /data/www/wwwroot/linuxtone/test;<br />
    deny all;<br />
}</p>
<p>实例:<br />
禁止访问某个目录</p>
<p>location ~ ^/(WEB-INF)/ {<br />
    deny all;<br />
}</p>
<p>3. 使用ngx_http_access_module限制ip访问</p>
<p>location / {<br />
    deny 192.168.1.1;<br />
    allow 192.168.1.0/24;<br />
    allow 10.1.1.0/16;<br />
    deny all;<br />
}</p>
<p>详细参见wiki: http://wiki.codemongers.com/NginxHttpAccessModule#allow</p>
<p>4. Nginx 下载限制并发和速率</p>
<p>limit_zone linuxtone $binary_remote_addr 10m;<br />
server {<br />
    listen 80;<br />
    server_name down.linuxotne.org;<br />
    index index.html index.htm index.php;<br />
    root /data/www/wwwroot/down;<br />
    #Zone limit<br />
    location / {<br />
        limit_conn linuxtone 1;<br />
        limit_rate 20k;<br />
    }<br />
    &#8230;&#8230;&#8230;.<br />
}</p>
<p>只允许客房端一个线程,每个线程20k.</p>
<p><strong>【注】limit_zone linuxtone $binary_remote_addr 10m; 这个可以定义在主的</strong></p>
<p>5. Nginx 实现Apache一样目录列表</p>
<p>location / {<br />
    autoindex on;<br />
}</p>
<p>6. 上文件大小限制<br />
主配置文件里加入如下，具体大小根据你自己的业务做调整。</p>
<p>client_max_body_size 10m;</p>
<p>十、 Nginx 日志处理</p>
<p>1.Nginx 日志切割</p>
<p>#contab -e<br />
59 23 * * * /usr/local/sbin/logcron.sh /dev/null 2&gt;&amp;1</p>
<p># cat /usr/local/sbin/logcron.sh</p>
<p>#!/bin/bash</p>
<p>log_dir=&#8221;/data/logs&#8221;</p>
<p>time=`date +%Y%m%d`</p>
<p>/bin/mv ${log_dir}/access_linuxtone.org.log ${log_dir}/access_count.linuxtone.org.$time.logkill -USR1 `cat /var/run/nginx.pid`</p>
<p>更多的日志分析与处理就关注(同时欢迎你参加讨论):http://bbs.linuxtone.org/forum-8-1.html</p>
<p>2.利用AWSTATS分析NGINX日志<br />
设置好Nginx日志格式,仍后利用awstats进行分析.<br />
请参考: http://bbs.linuxtone.org/thread-56-1-1.html</p>
<p>3. Nginx 如何不记录部分日志<br />
日志太多，每天好几个G，少记录一些，下面的配置写到server{}段中就可以了</p>
<p>location ~ .*\.(js|jpg|JPG|jpeg|JPEG|css|bmp|gif|GIF)$ {<br />
    access_log off;<br />
}</p>
<p>十一、Nginx Cache服务配置</p>
<p>如果需要将文件缓存到本地，则需要增加如下几个子参数：</p>
<p>proxy_store on;<br />
proxy_store_access user:rw group:rw all:rw;<br />
proxy_temp_path 缓存目录;</p>
<p>其中，<br />
proxy_store on 用来启用缓存到本地的功能，<br />
proxy_temp_path 用来指定缓存在哪个目录下，如：proxy_temp_path html;</p>
<p>在经过上一步配置之后，虽然文件被缓存到了本地磁盘上，但每次请求仍会向远端拉取<br />
文件，为了避免去远端拉取文件，必须修改proxy_pass：</p>
<p>if ( !-e $request_filename) {<br />
    proxy_pass http://mysvr;<br />
}</p>
<p>即改成有条件地去执行proxy_pass，这个条件就是当请求的文件在本地的<br />
proxy_temp_path指定的目录下不存在时，再向后端拉取。</p>
<p>更多更高级的应用可以研究ncache，官方网站: http://code.google.com/p/ncache/</p>
<p>详细安装请参照http://bbs.linuxtone.org 应用加速版ncache相关的贴子.</p>
<p>十二、Nginx 负载均衡</p>
<p>1. Nginx 负载均衡基础知识</p>
<p>nginx的upstream目前支持4种方式的分配</p>
<p>1)、轮询（默认）<br />
每个请求按时间顺序逐一分配到不同的后端服务器，如果后端服务器down掉，能自动剔除。</p>
<p>2)、weight<br />
指定轮询几率，weight和访问比率成正比，用于后端服务器性能不均的情况。</p>
<p>2)、ip_hash<br />
每个请求按访问ip的hash结果分配，这样每个访客固定访问一个后端服务器，可以解决session的问题。</p>
<p>3)、fair（第三方）<br />
按后端服务器的响应时间来分配请求，响应时间短的优先分配。</p>
<p>4)、url_hash（第三方）</p>
<p>2. Nginx 负载均衡实例1</p>
<p>upstream bbs.linuxtone.org { #定义负载均衡设备的Ip及设备状态<br />
    server 127.0.0.1:9090 down;<br />
     server 127.0.0.1:8080 weight=2;<br />
     server 127.0.0.1:6060;<br />
     server 127.0.0.1:7070 backup;<br />
}</p>
<p>在需要使用负载均衡的server中增加</p>
<p>proxy_pass http://bbs.linuxtone.org/;</p>
<p>每个设备的状态设置为:<br />
a) down 表示单前的server暂时不参与负载<br />
b) weight 默认为1.weight越大，负载的权重就越大。<br />
c) max_fails ：允许请求失败的次数默认为1.当超过最大次数时，返回proxy_next_upstream 模块定义的错误<br />
d) fail_timeout:max_fails次失败后，暂停的时间。<br />
e) backup： 其它所有的非backup机器down或者忙的时候，请求backup机器。所以这台机器压力会最轻。</p>
<p>nginx支持同时设置多组的负载均衡，用来给不用的server来使用。</p>
<p>client_body_in_file_only 设置为On 可以讲client post过来的数据记录到文件中用来做debug<br />
client_body_temp_path 设置记录文件的目录 可以设置最多3层目录<br />
location 对URL进行匹配.可以进行重定向或者进行新的代理 负载均衡</p>
<p>3. Nginx 负载均衡实例 2<br />
按访问url的hash结果来分配请求，使每个url定向到同一个后端服务器，后端服务器为缓<br />
存时比较有效,也可以用作提高Squid缓存命中率.</p>
<p>简单的负载均等实例:<br />
#vi nginx.conf //nginx主配置文件核心配置<br />
&#8230;&#8230;&#8230;</p>
<p>#loadblance my.linuxtone.org<br />
upstream my.linuxtone.org {<br />
    ip_hash;<br />
    server 127.0.0.1:8080;<br />
    server 192.168.169.136:8080;<br />
    server 219.101.75.138:8080;<br />
    server 192.168.169.117;<br />
    server 192.168.169.118;<br />
    server 192.168.169.119;<br />
}<br />
&#8230;&#8230;&#8230;<br />
include vhosts/linuxtone_lb.conf;<br />
&#8230;&#8230;&#8230;</p>
<p># vi proxy.conf</p>
<p>proxy_redirect off;<br />
proxy_set_header Host $host;<br />
proxy_set_header X-Real-IP $remote_addr;<br />
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br />
client_max_body_size 50m;<br />
client_body_buffer_size 256k;<br />
proxy_connect_timeout 30;<br />
proxy_send_timeout 30;<br />
proxy_read_timeout 60;<br />
proxy_buffer_size 4k;<br />
proxy_buffers 4 32k;<br />
proxy_busy_buffers_size 64k;<br />
proxy_temp_file_write_size 64k;<br />
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;<br />
proxy_max_temp_file_size 128m;<br />
proxy_store on;<br />
proxy_store_access user:rw group:rw all:r;<br />
#nginx cache<br />
#client_body_temp_path /data/nginx_cache/client_body 1 2;<br />
proxy_temp_path /data/nginx_cache/proxy_temp 1 2;</p>
<p>#vi linuxtone_lb.conf</p>
<p>server {</p>
<p>    listen 80;<br />
    server_name my.linuxtone.org;<br />
    index index.php;<br />
    root /data/www/wwwroot/mylinuxtone;</p>
<p>    if (-f $request_filename) {<br />
        break;<br />
    }</p>
<p>    if (-f $request_filename/index.php) {<br />
        rewrite (.*) $1/index.php break;<br />
    }</p>
<p>    error_page 403 http://my.linuxtone.org/member.php?m=user&amp;a=login;</p>
<p>    location / {<br />
        if ( !-e $request_filename) {<br />
            proxy_pass http://my.linuxtone.org;<br />
            break;<br />
        }<br />
        include /usr/local/nginx/conf/proxy.conf;<br />
    }<br />
}</p>
<p>十三、Nginx简单优化</p>
<p>1. 减小nginx编译后的文件大小 (Reduce file size of nginx)<br />
默认的nginx编译选项里居然是用debug模式(-g)的（debug模式会插入很多跟踪和<br />
ASSERT之类），编译以后一个nginx有好几兆。去掉nginx的debug模式编译，编译以<br />
后只有几百K</p>
<p>在 <strong>auto/cc/gcc</strong>，最后几行有：</p>
<p># debug<br />
CFLAGS=”$CFLAGS -g”</p>
<p>注释掉或删掉这几行，重新编译即可。</p>
<p>2. 修改Nginx的header伪装服务器</p>
<p>1) 修改<strong>nginx.h</strong></p>
<p>#vi nginx-0.7.30/src/core/nginx.h<br />
#define NGINX_VERSION &#8220;1.8&#8243;<br />
#define NGINX_VER &#8220;LTWS/&#8221; NGINX_VERSION<br />
#define NGINX_VAR &#8220;NGINX&#8221;<br />
#define NGX_OLDPID_EXT &#8220;.oldbin&#8221;</p>
<p>2) 修改nginx_http_header_filter_module<br />
#vi nginx-0.7.30/src/http/ngx_http_header_filter_module.c<br />
将如下</p>
<p>static char ngx_http_server_string[] = &#8220;Server: nginx&#8221; CRLF;</p>
<p>修改为</p>
<p>static char ngx_http_server_string[] = &#8220;Server: LTWS&#8221; CRLF;</p>
<p>a) 修改nginx_http_header_filter_module<br />
#vi nginx-0.7.30/src/http/ngx_http_special_response.c<br />
将如下：</p>
<p>static u_char ngx_http_error_full_tail[] =<br />
&#8220;&lt;hr&gt;&lt;center&gt;&#8221; NGINX_VER &#8220;&lt;/center&gt;&#8221; CRLF<br />
&#8220;&lt;/body&gt;&#8221; CRLF<br />
&#8220;&lt;/html&gt;&#8221; CRLF<br />
;</p>
<p>static u_char ngx_http_error_tail[] =<br />
&#8220;&lt;hr&gt;&lt;center&gt;nginx&lt;/center&gt;&#8221; CRLF<br />
&#8220;&lt;/body&gt;&#8221; CRLF<br />
&#8220;&lt;/html&gt;&#8221; CRLF<br />
;</p>
<p>修改为:</p>
<p>static u_char ngx_http_error_full_tail[] =<br />
&#8220;&lt;center&gt; &#8220;NGINX_VER&#8221; &lt;/center&gt;&#8221; CRLF<br />
&#8220;&lt;hr&gt;&lt;center&gt;http://www.linuxtone.org&lt;/center&gt;&#8221; CRLF<br />
&#8220;&lt;/body&gt;&#8221; CRLF<br />
&#8220;&lt;/html&gt;&#8221; CRLF<br />
;</p>
<p>static u_char ngx_http_error_tail[] =<br />
&#8220;&lt;hr&gt;&lt;center&gt;LTWS&lt;/center&gt;&#8221; CRLF<br />
&#8220;&lt;/body&gt;&#8221; CRLF<br />
&#8220;&lt;/html&gt;&#8221; CRLF<br />
;</p>
<p>修改后重新编译一下环境,</p>
<p>404错误的时候显示效果图（如果没有指定错误页的话）：</p>
<p>利用curl命令查看服务器header</p>
<p>3. 为特定的CPU指定CPU类型编译优化.</p>
<p>默认nginx使用的GCC编译参数是-O</p>
<p>需要更加优化可以使用以下两个参数</p>
<p>&#8211;with-cc-opt=&#8217;-O3&#8242; \</p>
<p>&#8211;with-cpu-opt=opteron \</p>
<p>使得编译针对特定CPU以及增加GCC的优化.</p>
<p>此方法仅对性能有所改善并不会有很大的性能提升，供朋友们参考.</p>
<p>CPUD类型确定:</p>
<p># cat /proc/cpuinfo | grep &#8220;model name&#8221;</p>
<p>编译优化参数参考：http://en.gentoo-wiki.com/wiki/Safe_Cflags</p>
<p>4. Tcmalloc优化Nginx 性能</p>
<p># wget http://download.savannah.gnu.org/releases/libunwind/libunwind-0.99-alpha.tar.gz<br />
# tar zxvf libunwind-0.99-alpha.tar.gz<br />
# cd libunwind-0.99-alpha/<br />
# CFLAGS=-fPIC ./configure<br />
# make CFLAGS=-fPIC<br />
# make CFLAGS=-fPIC install<br />
# wget http://google-perftools.googlecode.com/files/google-perftools-0.98.tar.gz<br />
# tar zxvf google-perftools-0.98.tar.gz<br />
# cd google-perftools-0.98/<br />
# ./configure<br />
# make &amp;&amp; make install<br />
# echo &#8220;/usr/local/lib&#8221; &gt; /etc/ld.so.conf.d/usr_local_lib.conf<br />
# ldconfig<br />
# lsof -n | grep tcmalloc</p>
<p>编译nginx 加载google_perftools_module:</p>
<p>./configure &#8211;with-google_perftools_module</p>
<p>在主配置文件加入nginx.conf 添加:</p>
<p>google_perftools_profiles /path/to/profile;</p>
<p>5. 内核参数优化<br />
# vi /etc/sysctl.conf</p>
<p>#在末尾增加以下内容：<br />
net.ipv4.tcp_fin_timeout = 30<br />
net.ipv4.tcp_keepalive_time = 300<br />
net.ipv4.tcp_syncookies = 1<br />
net.ipv4.tcp_tw_reuse = 1<br />
net.ipv4.tcp_tw_recycle = 1<br />
net.ipv4.ip_local_port_range = 5000 65000</p>
<p>#使配置立即生效<br />
/sbin/sysctl -p</p>
<p>十四、如何构建高性的LEMP</p>
<p>请参见: http://www.linuxtone.org/lemp/lemp.pdf</p>
<p>1、 提供完整的配置脚本下载：http://www.linuxtone.org/lemp/scripts.tar.gz<br />
2、 提供NGINX常见配置范例含(虚拟主机，防盗链，Rewrite,访问控制，负载均衡Discuz相关程序静态化及等等),你只要稍稍修改即可线上应用。<br />
3、将原版的xcache替换成EA，并提供相关简单调优脚本及配置文件。</p>
<p>更多的及更新资料请关注: http://www.linuxtone.org</p>
<p>十五、Nginx监控</p>
<p>1、 RRDTOOL+Perl脚本画图监控<br />
先安装好rrdtool ，关于rrdtool本文不作介绍，具体安装请参照linuxtone监控版块.</p>
<p>#cd /usr/local/sbnin<br />
#wget http://blog.kovyrin.net/files/mrtg/rrd_nginx.pl.txt<br />
#mv rrd_nginx.pl.txt rrd_nginx.pl<br />
#chmod a+x rrd_nginx.pl</p>
<p>#vi rrd_nginx.pl //配置脚本文件设置好路径</p>
<p>#!/usr/bin/perl<br />
use RRDs;<br />
use LWP::UserAgent;</p>
<p># define location of rrdtool databases<br />
my $rrd = &#8216;/data/www/wwwroot/nginx/rrd&#8217;;</p>
<p># define location of images<br />
my $img = &#8216;/data/www/wwwroot/nginx/html&#8217;;</p>
<p># define your nginx stats URL<br />
my $URL = &#8220;http:// 219.32.205.13/nginx_status&#8221;;<br />
…………</p>
<p>【注】根据自己具体的状况修改相应的路径.</p>
<p>#crontab –e //加入如下</p>
<p>* * * * * /usr/local/sbin/rrd_nginx.pl</p>
<p>重启crond后，通过配置nginx虚拟主机指到/data/www/wwwroot/nginx/html目录，通过crond<br />
自动执行perl脚本会生成很多图片.</p>
<p>http://xxx/connections-day.png即可看到服务器状态图。</p>
<p>2、 官方Nginx-rrd 监控服务（多虚拟主机）（推荐）<br />
网址：http://www.nginx.eu/nginx-rrd.html</p>
<p>此解决方案其实是基于上述监控方案的一个改进和增强，同样先安装好rrdtool这个画图工<br />
具和相应的perl模块再做如下操作：</p>
<p># yum install perl-HTML*</p>
<p>先建立好生成的库存和图片存放录</p>
<p>#mkdir -p /data/www/wwwroot/nginx/{rrd,html}<br />
#cd /usr/local/sbin<br />
#wget http://www.nginx.eu/nginx-rrd/nginx-rrd-0.1.4.tgz<br />
#tar zxvf nginx-rrd-0.1.4.tgz<br />
#cd nginx-rrd-0.1.4<br />
#cd etc/<br />
#cp nginx-rrd.conf /etc<br />
#cd etc/cron.d<br />
#cp nginx-rrd.cron /etc/cron.d<br />
#cd /usr/local/src/nginx-rrd-0.1.4/html<br />
# cp index.php /data/www/wwwroot/nginx/html/<br />
#cd /usr/local/src/nginx-rrd-0.1.4/usr/sbin<br />
#cp * /usr/sbin/</p>
<p>#vi /etc/nginx-rrd.conf</p>
<p>#####################################################<br />
#<br />
# dir where rrd databases are stored</p>
<p>RRD_DIR=&#8221;/data/www/wwwroot/nginx/rrd&#8221;;</p>
<p># dir where png images are presented</p>
<p>WWW_DIR=&#8221;/data/www/wwwroot/nginx/html&#8221;;</p>
<p># process nice level</p>
<p>NICE_LEVEL=&#8221;-19&#8243;;</p>
<p># bin dir</p>
<p>BIN_DIR=&#8221;/usr/sbin&#8221;;</p>
<p># servers to test</p>
<p># server_utl;server_name</p>
<p>SERVERS_URL=&#8221;http://219.32.205.13/nginx_status;219.32.205.13</p>
<p>http://www.linuxtone.org/nginx_status;www.linuxtone.org&#8221;" //根据你的具体情况做调整.</p>
<p>SEVERS_URL 格式 http://domain1/nginx_status;domain1 http://domain2/nginx_status;domain2</p>
<p>这种格式监控多虚拟主机连接状态：<br />
重点启crond服务，仍后通过http://219.32.205.13/nginx/html/ 即可访问。配置过程很简单！</p>
<p>3、 CACTI模板监控Nginx</p>
<p>利用Nginx_status状态来画图实现CACTI监控<br />
nginx编译时允许http_stub_status_module</p>
<p># vi /usr/local/nginx/conf/nginx.conf</p>
<p>location /nginx_status {<br />
    stub_status on;<br />
    access_log off;<br />
    allow 192.168.1.37;<br />
    deny all;<br />
}# kill -HUP `cat /usr/local/nginx/logs/nginx.pid`<br />
# wget http://forums.cacti.net/download.php?id=12676<br />
# tar xvfz cacti-nginx.tar.gz<br />
# cp cacti-nginx/get_nginx_socket_status.pl /data/cacti/scripts/<br />
# cp cacti-nginx/get_nginx_clients_status.pl /data/cacti/scripts/<br />
# chmod 755 /data/cacti/scripts/get_nginx*</p>
<p>检测插件<br />
# /data/cacti/scripts/get_nginx_clients_status.pl http://192.168.1.37/nginx_status</p>
<p>在cacti管理面板导入</p>
<p>cacti_graph_template_nginx_clients_stat.xml<br />
cacti_graph_template_nginx_sockets_stat.xml</p>
<p>十六、常见问题与错误处理</p>
<p>1、 400 bad request错误的原因和解决办法<br />
配置nginx.conf相关设置如下.</p>
<p>client_header_buffer_size 16k;<br />
large_client_header_buffers 4 64k;</p>
<p>根据具体情况调整，一般适当调整值就可以。</p>
<p>2、 Nginx 502 Bad Gateway错误</p>
<p>proxy_next_upstream error timeout invalid_header http_500 http_503;</p>
<p>或者尝试设置:</p>
<p>large_client_header_buffers 4 32k;</p>
<p>3、 Nginx出现的413 Request Entity Too Large错误</p>
<p>这个错误一般在上传文件的时候会出现，</p>
<p>编辑Nginx主配置文件Nginx.conf，找到http{}段，添加</p>
<p>client_max_body_size 10m; //设置多大根据自己的需求作调整.</p>
<p>如果运行php的话这个大小client_max_body_size要和php.ini中的如下值的最大值<br />
一致或者稍大，这样就不会因为提交数据大小不一致出现的错误。</p>
<p>post_max_size = 10M<br />
upload_max_filesize = 2M</p>
<p>4、 解决504 Gateway Time-out(nginx)</p>
<p>遇到这个问题是在升级discuz论坛的时候遇到的</p>
<p>一般看来, 这种情况可能是由于nginx默认的fastcgi进程响应的缓冲区太小造成的,<br />
这将导致fastcgi进程被挂起, 如果你的fastcgi服务对这个挂起处理的不好, 那么最后就<br />
极有可能导致504 Gateway Time-out</p>
<p>现在的网站, 尤其某些论坛有大量的回复和很多内容的, 一个页面甚至有几百K。</p>
<p>默认的fastcgi进程响应的缓冲区是8K, 我们可以设置大点</p>
<p>在nginx.conf里, 加入：</p>
<p>fastcgi_buffers 8 128k</p>
<p>这表示设置fastcgi缓冲区为8×128k</p>
<p>当然如果您在进行某一项即时的操作, 可能需要nginx的超时参数调大点，例如设置成60秒：</p>
<p>send_timeout 60;</p>
<p>只是调整了这两个参数, 结果就是没有再显示那个超时, 可以说效果不错, 但是也<br />
可能是由于其他的原因, 目前关于nginx的资料不是很多, 很多事情都需要长期的经验<br />
累计才有结果, 期待您的发现哈!</p>
<p>5、 如何使用Nginx Proxy</p>
<p>朋友一台服务器运行tomcat 为8080端口,IP:192.168.1.2:8080,另一台机器<br />
IP:192.168.1.8. 朋友想通过访问http://192.168.1.8即可访问tomcat服务.配置如下:</p>
<p>在192.168.1.8的nginx.conf上配置如下:</p>
<p>server {<br />
    listen 80;<br />
    server_name java.linuxtone.org<br />
    location / {<br />
        proxy_pass http://192.168.1.2:8080;<br />
        include /usr/local/nginx/conf/proxy.conf;<br />
    }<br />
}</p>
<p>6、 如何关闭Nginx的LOG</p>
<p>access_log /dev/null;<br />
error_log /dev/null;</p>
<p>十七、相关资源下载</p>
<p>1. nginx配置示例及脚本下载:<br />
# wget http://www.linuxtone.org/lemp/scripts.tar.gz #此脚本范例定期更新.</p>
<p>【附】:<br />
本文档定期更新,同时欢迎朋友多提宝贵意见，丰富nginx tips内容.<br />
最新的文档发布.请朋友们关注: http://bbs.linuxtone.org</p>
]]></content:encoded>
			<wfw:commentRss>http://www.inginx.com/nginx-manual-download/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nginx+tomcat 做负载均衡</title>
		<link>http://www.inginx.com/fuzaijunheng/</link>
		<comments>http://www.inginx.com/fuzaijunheng/#comments</comments>
		<pubDate>Fri, 02 Sep 2011 08:02:07 +0000</pubDate>
		<dc:creator>iNginx</dc:creator>
				<category><![CDATA[Nginx 安装使用]]></category>
		<category><![CDATA[负载均衡]]></category>

		<guid isPermaLink="false">http://www.inginx.com/?p=188</guid>
		<description><![CDATA[ 
一、
1、将tomcat 的server.xml文件中所有端口号都改为不同。
2、Nginx 的nginx.conf文件中
    http {}增加如下内容

     upstream sp.imichat.com{ 
       server 127.0.0.1:8080 weight=2; 
       server 127.0.0.1:8088 weight=2; 
       ip_hash;
     }

server {} 修改信息：

listen 80;
server_name sp.imichat.com;
#charset koi8-r;

#access_log logs/host_access_log main;

        location /{
          proxy_redirect          off;
          proxy_set_header        Host $host;
          proxy_set_header        X-Real-IP $remote_addr;
          proxy_set_header        X-Forwarded-For [...]]]></description>
			<content:encoded><![CDATA[<p> </p>
<p>一、</p>
<p>1、将tomcat 的server.xml文件中所有端口号都改为不同。<br />
2、Nginx 的nginx.conf文件中<br />
    http {}增加如下内容<br />
<code><br />
     upstream sp.imichat.com{ <br />
       server 127.0.0.1:8080 weight=2; <br />
       server 127.0.0.1:8088 weight=2; <br />
       ip_hash;<br />
     }<br />
</code></p>
<p>server {} 修改信息：</p>
<p><code><br />
listen 80;<br />
server_name sp.imichat.com;</code></p>
<p><code>#charset koi8-r;</p>
<p></code></p>
<p><code>#access_log logs/host_access_log main;<br />
</code><br />
        location /{<br />
          proxy_redirect          off;<br />
          proxy_set_header        Host $host;<br />
          proxy_set_header        X-Real-IP $remote_addr;<br />
          proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;<br />
          proxy_pass http://sp.imichat.com;<br />
        }</p>
<p>例：<br />
#user  nobody;<br />
worker_processes  1;</p>
<p>events {<br />
    worker_connections  51024;<br />
}<br />
http {<br />
    include       mime.types;<br />
    default_type  application/octet-stream;</p>
<p>     upstream localhost { <br />
       server 127.0.0.1:8080 weight=2; <br />
       server 127.0.0.1:8088 weight=2; <br />
       ip_hash;<br />
     }</p>
<p>    sendfile        on;</p>
<p>    keepalive_timeout  65;</p>
<p>    server {<br />
        listen       80;<br />
        server_name  localhost;</p>
<p>        location /{<br />
                        proxy_redirect          off;<br />
                        proxy_set_header        Host $host;<br />
                        proxy_set_header        X-Real-IP $remote_addr;<br />
                        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;<br />
   proxy_pass http://localhost;<br />
        }</p>
<p>        error_page   500 502 503 504  /50x.html;<br />
        location = /50x.html {<br />
            root   html;<br />
        }</p>
<p>    }}</p>
<p><code><br />
二、<br />
</code></p>
<p><code>参数描述</p>
<p>检测nginx配置文件是否正确<br />
/usr/local/nginx/sbin/nginx -t -c nginx.conf<br />
-c 配置文件路径</p>
<p>-g Set global directives. (version &gt;=0.7.4)</p>
<p>-t 检测文件是否正确不执行</p>
<p>-v Print version.</p>
<p>-V Print nginx version, compiler version and configure parameters.</p>
<p>编译时如果使用了–with-debug编译,还可以使用error_log file [ debug_core| debug_http | debug_event …] 来获得debug信息</p>
<p>通过信号对 Nginx 进行控制</p>
<p>Nginx 支持下表中的信号：</p>
<p>信号名 作用描述 <br />
TERM, INT 快速关闭程序，中止当前正在处理的请求 <br />
QUIT 处理完当前请求后，关闭程序 <br />
HUP 重新加载配置，并开启新的工作进程，关闭就的进程，此操作不会中断请求 <br />
USR1 重新打开日志文件，用于切换日志，例如每天生成一个新的日志文件 <br />
USR2 平滑升级可执行程序 <br />
WINCH 从容关闭工作进程</p>
<p>有两种方式来通过这些信号去控制 Nginx，第一是通过 logs 目录下的 nginx.pid 查看当前运行的 Nginx 的进程 ID，通过 kill – XXX &lt;pid&gt; 来控制 Nginx，其中 XXX 就是上表中列出的信号名。如果您的系统中只有一个 Nginx 进程，那您也可以通过 killall 命令来完成，例如运行 killall – s HUP nginx 来让 Nginx 重新加载配置。</p>
<p>配置:</p>
<p>use [ kqueue | rtsig | epoll | /dev/poll | select | poll ];FreeBSD使用kqueue，Linux选epoll.<br />
worker_connections number    每个worker的最大连接数<br />
Maxclient = work_processes *　worker_connections</p>
<p>nginx的upstream目前支持4种方式的分配</p>
<p>1、轮询（默认）</p>
<p>每个请求按时间顺序逐一分配到不同的后端服务器，如果后端服务器down掉，能自动剔除。</p>
<p>2、weight</p>
<p>指定轮询几率，weight和访问比率成正比，用于后端服务器性能不均的情况。</p>
<p>2、ip_hash</p>
<p>每个请求按访问ip的hash结果分配，这样每个访客固定访问一个后端服务器，可以解决session的问题。</p>
<p>3、fair（第三方）</p>
<p>按后端服务器的响应时间来分配请求，响应时间短的优先分配。</p>
<p>4、url_hash（第三方）</p>
<p>按访问url的hash结果来分配请求，使每个url定向到同一个后端服务器，后端服务器为缓存时比较有效。</p>
<p>代理<br />
只需要在nginx的配置文件中增加虚拟主机,然后加入<br />
\proxy_pass <a href="http://localhost:8000/">http://localhost:8000</a>;</p>
<p>负载均衡:<br />
只需要在http中增加<br />
upstream tgcluster {#定义负载均衡设备的Ip及设备状态<br />
ip_hash;<br />
server 127.0.0.1:9090 down;<br />
server 127.0.0.1:8080 weight=2;<br />
server 127.0.0.1:6060;<br />
server 127.0.0.1:7070 backup;<br />
}<br />
在需要使用负载均衡的server中增加<br />
proxy_pass <a href="http://tgcluster/">http://tgcluster/</a>;</p>
<p>每个设备的状态设置为:<br />
1.down 表示单前的server暂时不参与负载<br />
2.weight 默认为1.weight越大，负载的权重就越大。<br />
3.max_fails ：允许请求失败的次数默认为1.当超过最大次数时，返回proxy_next_upstream 模块定义的错误<br />
4.fail_timeout:max_fails次失败后，暂停的时间。<br />
5.backup： 其它所有的非backup机器down或者忙的时候，请求backup机器。所以这台机器压力会最轻。</p>
<p>nginx支持同时设置多组的负载均衡，用来给不用的server来使用。</p>
<p>client_body_in_file_only 设置为On 可以讲client post过来的数据记录到文件中用来做debug<br />
client_body_temp_path 设置记录文件的目录 可以设置最多3层目录</p>
<p>location 对URL进行匹配.可以进行重定向或者进行新的代理 负载均衡</p>
<p>FASTCGI配置:</p>
<p>请将以下内容保存为fastcgi_params文件，保存于/usr/local/nginx/conf下（Ubuntu可保存于/etc/nginx下），他为我们的FastCGI模块设置了基本的环境变量：</p>
<p>#fastcgi_params<br />
fastcgi_param GATEWAY_INTERFACE CGI/1.1;<br />
fastcgi_param SERVER_SOFTWARE    nginx;<br />
fastcgi_param QUERY_STRING       $query_string;<br />
fastcgi_param REQUEST_METHOD     $request_method;<br />
fastcgi_param CONTENT_TYPE       $content_type;<br />
fastcgi_param CONTENT_LENGTH     $content_length;<br />
fastcgi_param SCRIPT_FILENAME    $document_root$fastcgi_script_name;<br />
fastcgi_param SCRIPT_NAME        $fastcgi_script_name;<br />
fastcgi_param REQUEST_URI        $request_uri;<br />
fastcgi_param DOCUMENT_URI       $document_uri;<br />
fastcgi_param DOCUMENT_ROOT      $document_root;<br />
fastcgi_param SERVER_PROTOCOL    $server_protocol;<br />
fastcgi_param REMOTE_ADDR        $remote_addr;<br />
fastcgi_param REMOTE_PORT        $remote_port;<br />
fastcgi_param SERVER_ADDR        $server_addr;<br />
fastcgi_param SERVER_PORT        $server_port;<br />
fastcgi_param SERVER_NAME        $server_name;<br />
# PHP only, required if PHP was built with –enable-force-cgi-redirect<br />
fastcgi_param REDIRECT_STATUS    200;请特别注意加粗的一行，PHP-CGI特别需要此行信息来确定PHP文件的位置。</p>
<p>另外需要在PHP-CGI的配置文件（Ubuntu 上此配置文件位于/etc/php5/cgi/php.ini）中，打开cgi.fix_pathinfo选项：</p>
<p>cgi.fix_pathinfo=1;这样php-cgi方能正常使用SCRIPT_FILENAME这个变量。</p>
<p>接下来在nginx的配置中针对php文件配置其利用FastCGI进程来执行：</p>
<p>server {<br />
index index.php;<br />
root /usr/local/nginx/html;</p>
<p>    location ~ .*.php$ {<br />
include /usr/local/nginx/conf/fastcgi_params; #请根据自己保存的路径进行设置<br />
fastcgi_index index.php;<br />
fastcgi_pass 127.0.0.1:9000; #请根据自己的FastCGI绑定的地址和端口进行配置<br />
}<br />
}通知Nginx重新载入配置:</p>
<p>kill -HUP `cat /usr/local/nginx/logs/nginx.pid`Ubuntu用户可以使用init脚本：sudo /etc/init.d/nginx reload</p>
<p>然后启动php-cgi -b 127.0.0.1:9000</p>
<p>如果出现No input file specified表示SCRIPT_FILENAME设置的有问题。<br />
使用lighttpd的 spawn-fcgi</p>
<p>get <a href="http://www.lighttpd.net/download/lighttpd-1.4.18.tar.bz2">http://www.lighttpd.net/download/lighttpd-1.4.18.tar.bz2</a> #获取Lighttpd的源码包<br />
tar -xvjf lighttpd-1.4.18.tar.bz2<br />
cd lighttpd-1.4.18<br />
./configure #编译<br />
make<br />
cp src/spawn-fcgi /usr/local/bin/spawn-fcgi #取出spawn-fcgi的程序下面我们就可以使用 spawn-fcgi 来控制php-cgi的FastCGI进程了</p>
<p>/usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u www-data -g www-data -f /usr/bin/php-cgi参数含义如下</p>
<p>-f &lt;fcgiapp&gt; 指定调用FastCGI的进程的执行程序位置，根据系统上所装的PHP的情况具体设置 <br />
-a &lt;addr&gt; 绑定到地址addr <br />
-p &lt;port&gt; 绑定到端口port <br />
-s &lt;path&gt; 绑定到unix socket的路径path <br />
-C &lt;childs&gt; 指定产生的FastCGI的进程数，默认为5（仅用于PHP） <br />
-P &lt;path&gt; 指定产生的进程的PID文件路径 <br />
-u和-g FastCGI使用什么身份（-u 用户 -g 用户组）运行，Ubuntu下可以使用www-data，其他的根据情况配置，如nobody、apache等</p>
<p>#运行用户<br />
user   nobody nobody;<br />
#启动进程<br />
worker_processes   2;<br />
#全局错误日志及PID文件<br />
error_log   logs/error.log notice;<br />
pid        logs/nginx.pid;<br />
#工作模式及连接数上限<br />
events {<br />
use epoll;<br />
worker_connections    1024;<br />
}<br />
#设定http服务器，利用它的反向代理功能提供负载均衡支持<br />
http {<br />
#设定mime类型<br />
include    conf/mime.types;<br />
default_type   application/octet-stream;<br />
#设定日志格式<br />
log_format main        '$remote_addr - $remote_user [$time_local] '<br />
'"$request" $status $bytes_sent '<br />
'"$http_referer" "$http_user_agent" '<br />
'"$gzip_ratio"';<br />
log_format download '$remote_addr - $remote_user [$time_local] '<br />
'"$request" $status $bytes_sent '<br />
'"$http_referer" "$http_user_agent" '<br />
'"$http_range" "$sent_http_content_range"';<br />
#设定请求缓冲<br />
client_header_buffer_size 1k;<br />
large_client_header_buffers   4 4k;<br />
#开启gzip模块<br />
gzip on;<br />
gzip_min_length   1100;<br />
gzip_buffers 4 8k;<br />
gzip_types    text/plain;<br />
output_buffers   1 32k;<br />
postpone_output   1460;<br />
#设定access log<br />
access_log   logs/access.log   main;<br />
client_header_timeout   3m;<br />
client_body_timeout 3m;<br />
send_timeout       3m;<br />
sendfile             on;<br />
tcp_nopush              on;<br />
tcp_nodelay          on;<br />
keepalive_timeout   65;<br />
#设定负载均衡的服务器列表<br />
upstream mysvr {<br />
#weigth参数表示权值，权值越高被分配到的几率越大<br />
#本机上的Squid开启3128端口<br />
server 192.168.8.1:3128 weight=5;<br />
server 192.168.8.2:80   weight=1;<br />
server 192.168.8.3:80   weight=6;<br />
}<br />
#设定虚拟主机<br />
server {<br />
listen       80;<br />
server_name 192.168.8.1 <a href="http://www.yejr.com/" target="_blank">www.yejr.com</a>;<br />
charset gb2312;<br />
#设定本虚拟主机的访问日志<br />
access_log   logs/www.yejr.com.access.log   main;<br />
#如果访问 /img/*, /js/*, /css/* 资源，则直接取本地文件，不通过squid<br />
#如果这些文件较多，不推荐这种方式，因为通过squid的缓存效果更好<br />
location ~ ^/(img|js|css)/   {<br />
root /data3/Html;<br />
expires 24h;<br />
}</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.inginx.com/fuzaijunheng/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>nginx编译参数选项详解</title>
		<link>http://www.inginx.com/nginx-make-install/</link>
		<comments>http://www.inginx.com/nginx-make-install/#comments</comments>
		<pubDate>Fri, 02 Sep 2011 08:00:25 +0000</pubDate>
		<dc:creator>iNginx</dc:creator>
				<category><![CDATA[Nginx 安装使用]]></category>

		<guid isPermaLink="false">http://www.inginx.com/?p=186</guid>
		<description><![CDATA[configure 脚本确定系统所具有一些特性，特别是 nginx 用来处理连接的方法。然后，它创建 Makefile 文件。
configure 支持下面的选项：
&#8211;prefix= &#60;path&#62; &#8211; Nginx安装路径。如果没有指定，默认为 /usr/local/nginx。
&#8211;sbin-path= &#60;path&#62; &#8211; Nginx可执行文件安装路径。只能安装时指定，如果没有指定，默认为&#60;prefix&#62;/sbin/nginx。
&#8211;conf-path= &#60;path&#62; &#8211; 在没有给定-c选项下默认的nginx.conf的路径。
                    如果没有指定，默认为&#60;prefix&#62;/conf/nginx.conf。
&#8211;pid-path= &#60;path&#62; &#8211; 在nginx.conf中没有指定pid指令的情况下，默认的nginx.pid的路径。
                    如果没有指定，默认为 &#60;prefix&#62;/logs/nginx.pid。
&#8211;lock-path= &#60;path&#62; &#8211; nginx.lock文件的路径。
&#8211;error-log-path= &#60;path&#62; &#8211; 在nginx.conf中没有指定error_log指令的情况下，默认的错误日志的路径。
                            如果没有指定，默认为 [...]]]></description>
			<content:encoded><![CDATA[<p>configure 脚本确定系统所具有一些特性，特别是 nginx 用来处理连接的方法。然后，它创建 Makefile 文件。</p>
<p>configure 支持下面的选项：</p>
<p><strong>&#8211;prefix=</strong> &lt;path&gt; &#8211; Nginx安装路径。如果没有指定，默认为 /usr/local/nginx。</p>
<p><strong>&#8211;sbin-path=</strong> &lt;path&gt; &#8211; Nginx可执行文件安装路径。只能安装时指定，如果没有指定，默认为&lt;prefix&gt;/sbin/nginx。</p>
<p><strong>&#8211;conf-path=</strong> &lt;path&gt; &#8211; 在没有给定-c选项下默认的nginx.conf的路径。</p>
<p>                    如果没有指定，默认为&lt;prefix&gt;/conf/nginx.conf。</p>
<p><strong>&#8211;pid-path=</strong> &lt;path&gt; &#8211; 在nginx.conf中没有指定pid指令的情况下，默认的nginx.pid的路径。</p>
<p>                    如果没有指定，默认为 &lt;prefix&gt;/logs/nginx.pid。</p>
<p><strong>&#8211;lock-path=</strong> &lt;path&gt; &#8211; nginx.lock文件的路径。</p>
<p><strong>&#8211;error-log-path=</strong> &lt;path&gt; &#8211; 在nginx.conf中没有指定error_log指令的情况下，默认的错误日志的路径。</p>
<p>                            如果没有指定，默认为 &lt;prefix&gt;/logs/error.log。</p>
<p><strong>&#8211;http-log-path=</strong> &lt;path&gt; &#8211; 在nginx.conf中没有指定access_log指令的情况下，默认的访问日志的路径。</p>
<p>                          如果没有指定，默认为 &lt;prefix&gt;/logs/access.log。</p>
<p><strong>&#8211;user=</strong> &lt;user&gt; &#8211; 在nginx.conf中没有指定user指令的情况下，默认的nginx使用的用户。</p>
<p>                          如果没有指定，默认为 nobody。</p>
<p><strong>&#8211;group=</strong> &lt;group&gt; &#8211; 在nginx.conf中没有指定user指令的情况下，默认的nginx使用的组。</p>
<p>                          如果没有指定，默认为 nobody。</p>
<p><strong>&#8211;builddir=DIR</strong> &#8211; 指定编译的目录</p>
<p><strong>&#8211;with-rtsig_module</strong> &#8211; 启用 rtsig 模块</p>
<p><strong>&#8211;with-select_module</strong> <strong>&#8211;without-select_module</strong> &#8211; Whether or not to enable the select module. This module is enabled by default if a more suitable method such as kqueue, epoll, rtsig or /dev/poll is not discovered by configure.</p>
<p>//允许或不允许开启SELECT模式，如果 configure 没有找到更合适的模式，比如：kqueue(sun os),epoll (linux kenel 2.6+), rtsig(实时信号)或者/dev/poll(一种类似select的模式，底层实现与SELECT基本相 同，都是采用轮训方法) SELECT模式将是默认安装模式</p>
<p><strong>&#8211;with-poll_module</strong> <strong>&#8211;without-poll_module</strong> &#8211; Whether or not to enable the poll module. This module is enabled by default if a more suitable method such as kqueue, epoll, rtsig or /dev/poll is not discovered by configure.</p>
<p><strong>&#8211;with-http_ssl_module</strong> &#8211; Enable ngx_http_ssl_module. Enables SSL support and the ability to handle HTTPS requests. Requires OpenSSL. On Debian, this is libssl-dev.</p>
<p>//开启HTTP SSL模块，使NGINX可以支持HTTPS请求。这个模块需要已经安装了OPENSSL，在DEBIAN上是libssl-dev</p>
<p><strong>&#8211;with-http_realip_module</strong> &#8211; 启用 ngx_http_realip_module</p>
<p><strong>&#8211;with-http_addition_module</strong> &#8211; 启用 ngx_http_addition_module</p>
<p><strong>&#8211;with-http_sub_module</strong> &#8211; 启用 ngx_http_sub_module</p>
<p><strong>&#8211;with-http_dav_module</strong> &#8211; 启用 ngx_http_dav_module</p>
<p><strong>&#8211;with-http_flv_module</strong> &#8211; 启用 ngx_http_flv_module</p>
<p><strong>&#8211;with-http_stub_status_module</strong> &#8211; 启用 &#8220;server status&#8221; 页</p>
<p><strong>&#8211;without-http_charset_module</strong> &#8211; 禁用 ngx_http_charset_module</p>
<p><strong>&#8211;without-http_gzip_module</strong> &#8211; 禁用 ngx_http_gzip_module. 如果启用，需要 zlib 。</p>
<p><strong>&#8211;without-http_ssi_module</strong> &#8211; 禁用 ngx_http_ssi_module</p>
<p><strong>&#8211;without-http_userid_module</strong> &#8211; 禁用 ngx_http_userid_module</p>
<p><strong>&#8211;without-http_access_module</strong> &#8211; 禁用 ngx_http_access_module</p>
<p><strong>&#8211;without-http_auth_basic_module</strong> &#8211; 禁用 ngx_http_auth_basic_module</p>
<p><strong>&#8211;without-http_autoindex_module</strong> &#8211; 禁用 ngx_http_autoindex_module</p>
<p><strong>&#8211;without-http_geo_module</strong> &#8211; 禁用 ngx_http_geo_module</p>
<p><strong>&#8211;without-http_map_module</strong> &#8211; 禁用 ngx_http_map_module</p>
<p><strong>&#8211;without-http_referer_module</strong> &#8211; 禁用 ngx_http_referer_module</p>
<p><strong>&#8211;without-http_rewrite_module</strong> &#8211; 禁用 ngx_http_rewrite_module. 如果启用需要 PCRE 。</p>
<p><strong>&#8211;without-http_proxy_module</strong> &#8211; 禁用 ngx_http_proxy_module</p>
<p><strong>&#8211;without-http_fastcgi_module</strong> &#8211; 禁用 ngx_http_fastcgi_module</p>
<p><strong>&#8211;without-http_memcached_module</strong> &#8211; 禁用 ngx_http_memcached_module</p>
<p><strong>&#8211;without-http_limit_zone_module</strong> &#8211; 禁用 ngx_http_limit_zone_module</p>
<p><strong>&#8211;without-http_empty_gif_module</strong> &#8211; 禁用 ngx_http_empty_gif_module</p>
<p><strong>&#8211;without-http_browser_module</strong> &#8211; 禁用 ngx_http_browser_module</p>
<p><strong>&#8211;without-http_upstream_ip_hash_module</strong> &#8211; 禁用 ngx_http_upstream_ip_hash_module</p>
<p><strong>&#8211;with-http_perl_module</strong> &#8211; 启用 ngx_http_perl_module</p>
<p><strong>&#8211;with-perl_modules_path=PATH</strong> &#8211; 指定 perl 模块的路径</p>
<p><strong>&#8211;with-perl=PATH</strong> &#8211; 指定 perl 执行文件的路径</p>
<p><strong>&#8211;http-log-path=PATH</strong> &#8211; Set path to the http access log</p>
<p><strong>&#8211;http-client-body-temp-path=PATH</strong> &#8211; Set path to the http client request body temporary files</p>
<p><strong>&#8211;http-proxy-temp-path=PATH</strong> &#8211; Set path to the http proxy temporary files</p>
<p><strong>&#8211;http-fastcgi-temp-path=PATH</strong> &#8211; Set path to the http fastcgi temporary files</p>
<p><strong>&#8211;without-http</strong> &#8211; 禁用 HTTP server</p>
<p><strong>&#8211;with-mail</strong> &#8211; 启用 IMAP4/POP3/SMTP 代理模块</p>
<p><strong>&#8211;with-mail_ssl_module</strong> &#8211; 启用 ngx_mail_ssl_module</p>
<p><strong>&#8211;with-cc=PATH</strong> &#8211; 指定 C 编译器的路径</p>
<p><strong>&#8211;with-cpp=PATH</strong> &#8211; 指定 C 预处理器的路径</p>
<p><strong>&#8211;with-cc-opt=OPTIONS</strong> &#8211; Additional parameters which will be added to the variable CFLAGS. With the use of the system library PCRE in FreeBSD, it is necessary to indicate &#8211;with-cc-opt=&#8221;-I /usr/local/include&#8221;. If we are using select() and it is necessary to increase the number of file descriptors, then this also can be assigned here: &#8211;with-cc-opt=&#8221;-D FD_SETSIZE=2048&#8243;.</p>
<p><strong>&#8211;with-ld-opt=OPTIONS</strong> &#8211; Additional parameters passed to the linker. With the use of the system library PCRE in FreeBSD, it is necessary to indicate &#8211;with-ld-opt=&#8221;-L /usr/local/lib&#8221;.</p>
<p><strong>&#8211;with-cpu-opt=CPU</strong> &#8211; 为特定的 CPU 编译，有效的值包括：pentium, pentiumpro, pentium3, pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64</p>
<p><strong>&#8211;without-pcre</strong> &#8211; 禁止 PCRE 库的使用。同时也会禁止 HTTP rewrite 模块。在 &#8220;location&#8221; 配置指令中的正则表达式也需要 PCRE 。</p>
<p><strong>&#8211;with-pcre=DIR</strong> &#8211; 指定 PCRE 库的源代码的路径。</p>
<p><strong>&#8211;with-pcre-opt=OPTIONS</strong> &#8211; Set additional options for PCRE building.</p>
<p><strong>&#8211;with-md5=DIR</strong> &#8211; Set path to md5 library sources.</p>
<p><strong>&#8211;with-md5-opt=OPTIONS</strong> &#8211; Set additional options for md5 building.</p>
<p><strong>&#8211;with-md5-asm</strong> &#8211; Use md5 assembler sources.</p>
<p><strong>&#8211;with-sha1=DIR</strong> &#8211; Set path to sha1 library sources.</p>
<p><strong>&#8211;with-sha1-opt=OPTIONS</strong> &#8211; Set additional options for sha1 building.</p>
<p><strong>&#8211;with-sha1-asm</strong> &#8211; Use sha1 assembler sources.</p>
<p><strong>&#8211;with-zlib=DIR</strong> &#8211; Set path to zlib library sources.</p>
<p><strong>&#8211;with-zlib-opt=OPTIONS</strong> &#8211; Set additional options for zlib building.</p>
<p><strong>&#8211;with-zlib-asm=CPU</strong> &#8211; Use zlib assembler sources optimized for specified CPU, valid values are: pentium, pentiumpro</p>
<p><strong>&#8211;with-openssl=DIR</strong> &#8211; Set path to OpenSSL library sources</p>
<p><strong>&#8211;with-openssl-opt=OPTIONS</strong> &#8211; Set additional options for OpenSSL building</p>
<p><strong>&#8211;with-debug</strong> &#8211; 启用调试日志</p>
<p><strong>&#8211;add-module=PATH</strong> &#8211; Add in a third-party module found in directory PATH</p>
<p>在不同版本间，选项可能会有些许变化，请总是使用 <em>./configure &#8211;help</em> 命令来检查一下当前的选项列表</p>
<h2><strong>示例 1 </strong></h2>
<p><strong>Tips：</strong> 这只是一行！</p>
<div>
<div>Shell代码 <a title="复制代码" href="http://sjsky.iteye.com/blog/1146520#"><img src="http://sjsky.iteye.com/images/icon_copy.gif" alt="复制代码" /></a> <a title="收藏这段代码" href="javascript:void()"><img src="http://sjsky.iteye.com/images/icon_star.png" alt="收藏代码" /><img src="http://sjsky.iteye.com/images/spinner.gif" alt="" /></a></div>
</div>
<li>./configure \   </li>
<li>  &#8211;sbin-path=/usr/local/nginx/nginx \   </li>
<li>  &#8211;conf-path=/usr/local/nginx/nginx.conf \   </li>
<li>  &#8211;pid-path=/usr/local/nginx/nginx.pid \   </li>
<li>  &#8211;with-http_ssl_module \   </li>
<li>  &#8211;with-pcre=../pcre-4.4 \   </li>
<li>  &#8211;with-zlib=../zlib-1.1.3   </li>
<pre title="nginx编译选项详解">./configure \
  --sbin-path=/usr/local/nginx/nginx \
  --conf-path=/usr/local/nginx/nginx.conf \
  --pid-path=/usr/local/nginx/nginx.pid \
  --with-http_ssl_module \
  --with-pcre=../pcre-4.4 \
  --with-zlib=../zlib-1.1.3</pre>
<h2>示例 2</h2>
<p>Debian Lenny 默认设置</p>
<div>
<div>Shell代码 <a title="复制代码" href="http://sjsky.iteye.com/blog/1146520#"><img src="http://sjsky.iteye.com/images/icon_copy.gif" alt="复制代码" /></a> <a title="收藏这段代码" href="javascript:void()"><img src="http://sjsky.iteye.com/images/icon_star.png" alt="收藏代码" /><img src="http://sjsky.iteye.com/images/spinner.gif" alt="" /></a></div>
</div>
<li>./configure \   </li>
<li>  &#8211;conf-path=/etc/nginx/nginx.conf \   </li>
<li>  &#8211;error-log-path=/var/log/nginx/error.log \   </li>
<li>  &#8211;pid-path=/var/run/nginx.pid \   </li>
<li>  &#8211;lock-path=/var/lock/nginx.lock \   </li>
<li>  &#8211;http-log-path=/var/log/nginx/access.log \   </li>
<li>  &#8211;with-http_dav_module \   </li>
<li>  &#8211;http-client-body-temp-path=/var/lib/nginx/body \   </li>
<li>  &#8211;with-http_ssl_module \   </li>
<li>  &#8211;http-proxy-temp-path=/var/lib/nginx/proxy \   </li>
<li>  &#8211;with-http_stub_status_module \   </li>
<li>  &#8211;http-fastcgi-temp-path=/var/lib/nginx/fastcgi \   </li>
<li>  &#8211;with-debug \   </li>
<li>  &#8211;with-http_flv_module   </li>
<pre title="nginx编译选项详解">./configure \
  --conf-path=/etc/nginx/nginx.conf \
  --error-log-path=/var/log/nginx/error.log \
  --pid-path=/var/run/nginx.pid \
  --lock-path=/var/lock/nginx.lock \
  --http-log-path=/var/log/nginx/access.log \
  --with-http_dav_module \
  --http-client-body-temp-path=/var/lib/nginx/body \
  --with-http_ssl_module \
  --http-proxy-temp-path=/var/lib/nginx/proxy \
  --with-http_stub_status_module \
  --http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
  --with-debug \
  --with-http_flv_module</pre>
<h2>示例 3</h2>
<div>
<div>Shell代码 <a title="复制代码" href="http://sjsky.iteye.com/blog/1146520#"><img src="http://sjsky.iteye.com/images/icon_copy.gif" alt="复制代码" /></a> <a title="收藏这段代码" href="javascript:void()"><img src="http://sjsky.iteye.com/images/icon_star.png" alt="收藏代码" /><img src="http://sjsky.iteye.com/images/spinner.gif" alt="" /></a></div>
</div>
<li>./configure \   </li>
<li>  &#8211;prefix=/usr \   </li>
<li>  &#8211;conf-path=/etc/nginx/nginx.conf \   </li>
<li>  &#8211;http-log-path=/var/log/nginx/access_log \   </li>
<li>  &#8211;error-log-path=/var/log/nginx/error_log \   </li>
<li>  &#8211;pid-path=/var/run/nginx.pid \   </li>
<li>  &#8211;http-client-body-temp-path=/var/tmp/nginx/client \   </li>
<li>  &#8211;http-proxy-temp-path=/var/tmp/nginx/proxy \   </li>
<li>  &#8211;http-fastcgi-temp-path=/var/tmp/nginx/fastcgi \   </li>
<li>  &#8211;with-md5-asm &#8211;with-md5=/usr/include \   </li>
<li>  &#8211;with-sha1-asm \   </li>
<li>  &#8211;with-sha1=/usr/include \   </li>
<li>  &#8211;with-http_realip_module \   </li>
<li>  &#8211;with-http_ssl_module \   </li>
<li>  &#8211;with-http_perl_module \   </li>
<li>  &#8211;with-http_stub_status_module  </li>
<pre title="nginx编译选项详解">./configure \
  --prefix=/usr \
  --conf-path=/etc/nginx/nginx.conf \
  --http-log-path=/var/log/nginx/access_log \
  --error-log-path=/var/log/nginx/error_log \
  --pid-path=/var/run/nginx.pid \
  --http-client-body-temp-path=/var/tmp/nginx/client \
  --http-proxy-temp-path=/var/tmp/nginx/proxy \
  --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi \
  --with-md5-asm --with-md5=/usr/include \
  --with-sha1-asm \
  --with-sha1=/usr/include \
  --with-http_realip_module \
  --with-http_ssl_module \
  --with-http_perl_module \
  --with-http_stub_status_module</pre>
<p> </p>
<h2><strong>示例 4 </strong></h2>
<p>在装有 libgcrypt11-dev, libpcre3-dev and libssl-dev 的 Ubuntu/debian 上 (选择 &#8211;with-md5 或者 &#8211;with-sha1, 不要同时选择两个; 在 debian 和 ubuntu 上, 通常被指定到 /usr/lib)</p>
<div>
<div>Shell代码 <a title="复制代码" href="http://sjsky.iteye.com/blog/1146520#"><img src="http://sjsky.iteye.com/images/icon_copy.gif" alt="复制代码" /></a> <a title="收藏这段代码" href="javascript:void()"><img src="http://sjsky.iteye.com/images/icon_star.png" alt="收藏代码" /><img src="http://sjsky.iteye.com/images/spinner.gif" alt="" /></a></div>
</div>
<li>./configure &#8211;with-openssl=/usr/lib/ssl/ &#8211;with-md5=/usr/lib   </li>
<pre title="nginx编译选项详解">./configure --with-openssl=/usr/lib/ssl/ --with-md5=/usr/lib </pre>
<h2>示例 5</h2>
<p>用于 RedHat 系发行版 (RHEL, CentOS, Fedora). 本维基站点的服务器就是以此选项编译.</p>
<p>首先安装需求包:</p>
<div>
<div>Shell代码 <a title="复制代码" href="http://sjsky.iteye.com/blog/1146520#"><img src="http://sjsky.iteye.com/images/icon_copy.gif" alt="复制代码" /></a> <a title="收藏这段代码" href="javascript:void()"><img src="http://sjsky.iteye.com/images/icon_star.png" alt="收藏代码" /><img src="http://sjsky.iteye.com/images/spinner.gif" alt="" /></a></div>
</div>
<li>yum install gcc openssl-devel pcre-devel zlib-devel  </li>
<pre title="nginx编译选项详解">yum install gcc openssl-devel pcre-devel zlib-devel</pre>
<p>配置:</p>
<div>
<div>Shell代码 <a title="复制代码" href="http://sjsky.iteye.com/blog/1146520#"><img src="http://sjsky.iteye.com/images/icon_copy.gif" alt="复制代码" /></a> <a title="收藏这段代码" href="javascript:void()"><img src="http://sjsky.iteye.com/images/icon_star.png" alt="收藏代码" /><img src="http://sjsky.iteye.com/images/spinner.gif" alt="" /></a></div>
</div>
<li>./configure    </li>
<li>  &#8211;prefix=/usr \   </li>
<li>  &#8211;sbin-path=/usr/sbin/nginx \   </li>
<li>  &#8211;conf-path=/etc/nginx/nginx.conf \   </li>
<li>  &#8211;error-log-path=/var/log/nginx/error.log \   </li>
<li>  &#8211;pid-path=/var/run/nginx/nginx.pid  \   </li>
<li>  &#8211;lock-path=/var/lock/nginx.lock \   </li>
<li>  &#8211;user=nginx \   </li>
<li>  &#8211;group=nginx \   </li>
<li>  &#8211;with-http_ssl_module \   </li>
<li>  &#8211;with-http_flv_module \   </li>
<li>  &#8211;with-http_gzip_static_module \   </li>
<li>  &#8211;http-log-path=/var/log/nginx/access.log \   </li>
<li>  &#8211;http-client-body-temp-path=/var/tmp/nginx/client/ \   </li>
<li>  &#8211;http-proxy-temp-path=/var/tmp/nginx/proxy/ \   </li>
<li>  &#8211;http-fastcgi-temp-path=/var/tmp/nginx/fcgi/   </li>
<pre title="nginx编译选项详解">./configure
  --prefix=/usr \
  --sbin-path=/usr/sbin/nginx \
  --conf-path=/etc/nginx/nginx.conf \
  --error-log-path=/var/log/nginx/error.log \
  --pid-path=/var/run/nginx/nginx.pid  \
  --lock-path=/var/lock/nginx.lock \
  --user=nginx \
  --group=nginx \
  --with-http_ssl_module \
  --with-http_flv_module \
  --with-http_gzip_static_module \
  --http-log-path=/var/log/nginx/access.log \
  --http-client-body-temp-path=/var/tmp/nginx/client/ \
  --http-proxy-temp-path=/var/tmp/nginx/proxy/ \
  --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/</pre>
<p>  </p>
<p><strong>最后编译并安装 </strong></p>
<pre>make &amp;&amp; make install</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.inginx.com/nginx-make-install/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>nginx 在 centos 环境下安装</title>
		<link>http://www.inginx.com/nginx-centos-install/</link>
		<comments>http://www.inginx.com/nginx-centos-install/#comments</comments>
		<pubDate>Thu, 12 May 2011 03:36:43 +0000</pubDate>
		<dc:creator>iNginx</dc:creator>
				<category><![CDATA[Nginx 安装使用]]></category>

		<guid isPermaLink="false">http://www.inginx.com/?p=183</guid>
		<description><![CDATA[
yum install mysql mysql-server php php-mysql php-gd
cp /var/lib/mysql /www/mysql
mysql_install_db 
service mysql start
安装nginx
安装 nginx 出错 缺少 PCRE library 库
安装 openssl-devel
./configure &#8211;prefix=/www/nginx &#8211;prefix=/www/nginx
/usr/sbin/groupadd www
/usr/sbin/useradd -g www www
sudo chown www:www -R /www
sudo ./nginx
killall – [...]]]></description>
			<content:encoded><![CDATA[<div>
<div>yum install mysql mysql-server php php-mysql php-gd</div>
<div>cp /var/lib/mysql /www/mysql</div>
<div>mysql_install_db </div>
<div>service mysql start</div>
<div>安装nginx</div>
<div>安装 nginx 出错 缺少 PCRE library 库</div>
<div>安装 openssl-devel</div>
<div>./configure &#8211;prefix=/www/nginx &#8211;prefix=/www/nginx</div>
<div>/usr/sbin/groupadd www</div>
<div>/usr/sbin/useradd -g www www</div>
<div>sudo chown www:www -R /www</div>
<div>sudo ./nginx</div>
<div>killall – s HUP nginx</div>
<div>nginx 安装成功！</div>
<div>~/spawn-fcgi -a 127.0.0.1 -p 9000 -f /usr/bin/php-cgi</div>
<p> </p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.inginx.com/nginx-centos-install/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>nginx轻松搭建自己的flv流媒体服务器</title>
		<link>http://www.inginx.com/nginx-flv/</link>
		<comments>http://www.inginx.com/nginx-flv/#comments</comments>
		<pubDate>Thu, 12 May 2011 03:35:21 +0000</pubDate>
		<dc:creator>iNginx</dc:creator>
				<category><![CDATA[Nginx 成功分享]]></category>

		<guid isPermaLink="false">http://www.inginx.com/?p=181</guid>
		<description><![CDATA[



nginx搭建flv流媒体服务器



&#60;!&#8211;[if !supportLists]&#8211;&#62;一、&#60;!&#8211;[endif]&#8211;&#62;FLV视频发布方式简介FLV视频有两总发布方式
&#60;!&#8211;[if !supportLists]&#8211;&#62;1、  &#60;!&#8211;[endif]&#8211;&#62;HTTP方式
这种方式要下载FLV视频文件到本地播放，一旦FLV视频文件下载完成，就不会消耗服务器的资源和带宽，但是拖动功能没有RTMP/RTMP流媒体方式强大，很多视频网站都是用HTTP方式实现的，如：YouTube，土豆，酷6等
&#60;!&#8211;[if !supportLists]&#8211;&#62;2、  &#60;!&#8211;[endif]&#8211;&#62;RTMP/RTMP流媒体方式
这种方式不用下载FLV视频文件到本地，可以实时的播放flv文件，可以任意拖拽播放进度条，但是比较消耗服务器的资源，
&#60;!&#8211;[if !supportLists]&#8211;&#62;二、&#60;!&#8211;[endif]&#8211;&#62;使用nginx来搭建flv流媒体服务器
1、使用nginx来搭建flv流媒体服务器简介
nginx中的Flv Stream模块能实现flv流媒体的功能,而且支持flv视频进度条拖拽，另外nignx还可以作为方向代理服务器代理后端基于Flash Media Server或者Red5的RTMP/RTMP流媒体服务器
&#60;!&#8211;[if !supportLists]&#8211;&#62;2、  &#60;!&#8211;[endif]&#8211;&#62;下面我们就来搭建一个完整的nginx流媒体服务器
1）、Nginx服务器的安装
#安装zlib
tar xzvf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure
make &#38;&#38; make install
#安装pcre
tar zxvf pcre-7.9.tar.gz
cd pcre-7.9
./configure &#8211;prefix=/usr/local/pcre
make &#38;&#38; make install
#安装nginx
groupadd www
useradd -g www www
tar xzvf [...]]]></description>
			<content:encoded><![CDATA[<div>
<div>
<div>
<div>
<h3>nginx搭建flv流媒体服务器</h3>
</div>
</div>
</div>
<div>&lt;!&#8211;[if !supportLists]&#8211;&gt;一、&lt;!&#8211;[endif]&#8211;&gt;FLV视频发布方式简介FLV视频有两总发布方式</p>
<p>&lt;!&#8211;[if !supportLists]&#8211;&gt;1、  &lt;!&#8211;[endif]&#8211;&gt;HTTP方式</p>
<p>这种方式要<a href="http://download.chinaitlab.com/">下载</a>FLV视频文件到本地播放，一旦FLV视频文件<a href="http://download.chinaitlab.com/">下载</a>完成，就不会消耗<a href="http://server.chinaitlab.com/">服务器</a>的资源和带宽，但是拖动功能没有RTMP/RTMP流媒体方式强大，很多视频网站都是用HTTP方式实现的，如：YouTube，土豆，酷6等</p>
<p>&lt;!&#8211;[if !supportLists]&#8211;&gt;2、  &lt;!&#8211;[endif]&#8211;&gt;RTMP/RTMP流媒体方式</p>
<p>这种方式不用<a href="http://download.chinaitlab.com/">下载</a>FLV视频文件到本地，可以实时的播放flv文件，可以任意拖拽播放进度条，但是比较消耗<a href="http://server.chinaitlab.com/">服务器</a>的资源，</p>
<p>&lt;!&#8211;[if !supportLists]&#8211;&gt;二、&lt;!&#8211;[endif]&#8211;&gt;使用nginx来搭建flv流媒体服务器</p>
<p>1、使用nginx来搭建flv流媒体服务器简介</p>
<p>nginx中的Flv Stream模块能实现flv流媒体的功能,而且支持flv视频进度条拖拽，另外nignx还可以作为方向代理服务器代理后端基于Flash Media Server或者Red5的RTMP/RTMP流媒体服务器</p>
<p>&lt;!&#8211;[if !supportLists]&#8211;&gt;2、  &lt;!&#8211;[endif]&#8211;&gt;下面我们就来搭建一个完整的nginx流媒体服务器</p>
<p>1）、Nginx服务器的安装</p>
<p>#安装zlib</p>
<p>tar xzvf zlib-1.2.3.tar.gz</p>
<p>cd zlib-1.2.3</p>
<p>./configure</p>
<p>make &amp;&amp; make install</p>
<p>#安装pcre</p>
<p>tar zxvf pcre-7.9.tar.gz</p>
<p>cd pcre-7.9</p>
<p>./configure &#8211;prefix=/usr/local/pcre</p>
<p>make &amp;&amp; make install</p>
<p>#安装nginx</p>
<p>groupadd www</p>
<p>useradd -g www www</p>
<p>tar xzvf nginx-0.8.34.tar.gz</p>
<p>cd nginx-0.8.34</p>
<p>./configure &#8211;with-http_ssl_module &#8211;with-pcre=/root/zhang/nginx/pcre-7.9 &#8211;with-zlib=/root/zhang/nginx/zlib-1.2.3 &#8211;user=www &#8211;group=www &#8211;prefix=/usr/local/webserver/nginx &#8211;with-http_flv_module</p>
<p>make &amp;&amp; make install</p>
<p>2）、安装yamdi</p>
<p>yadmi的作用是为flv文件添加关键帧，才能实现拖动播放</p>
<p>#下载yadmi</p>
<p>wget <a href="http://sourceforge.net/projects/yamdi/files/yamdi/1.4/yamdi-1.4.tar.gz/download">http://sourceforge.net/projects/yamdi/files/yamdi/1.4/yamdi-1.4.tar.gz/download</a></p>
<p>#安装yadmi</p>
<p>tar xzvf yamdi-1.4.tar.gz</p>
<p>cd yamdi-1.4</p>
<p>make &amp;&amp; make install</p>
<p>使用方法：yamdi -i input.flv -o out.flv</p>
<p>给input.flv文件 添加关键帧，输出为out.flv文件</p>
<p>3）、配置nginx</p>
<p>vi /usr/local/nginx/conf/nginx.conf 添加以下内容（根据自身情况修改）：</p>
<p>user  www www;</p>
<p>worker_processes 30;</p>
<p>error_log  /usr/local/nginx/logs/error.log  crit;</p>
<p>pid        /usr/local/nginx/logs/nginx.pid;</p>
<p>events {</p>
<p>use epoll;</p>
<p>worker_connections      65535;</p>
<p>}</p>
<p>http {</p>
<p>include       mime.types;</p>
<p>default_type  application/octet-stream;</p>
<p>log_format main  &#8216;$remote_addr &#8211; $remote_user [$time_local] &#8216;</p>
<p>&#8216;&#8221;$request&#8221; $status $bytes_sent &#8216;</p>
<p>&#8216;&#8221;$http_referer&#8221; &#8220;$http_user_agent&#8221; &#8216;</p>
<p>&#8216;&#8221;$gzip_ratio&#8221;&#8216;;</p>
<p>keepalive_timeout  60;</p>
<p>server_names_hash_bucket_size  128;</p>
<p>client_header_buffer_size    32k;</p>
<p>large_client_header_buffers  4 32k;</p>
<p>access_log off;</p>
<p>gzip on;</p>
<p>gzip_min_length  1100;</p>
<p>gzip_buffers     4 8k;</p>
<p>gzip_types       text/plain;</p>
<p>output_buffers   1 32k;</p>
<p>postpone_output  1460;</p>
<p>client_header_timeout  3m;</p>
<p>client_body_timeout    3m;</p>
<p>send_timeout           3m;</p>
<p>sendfile                on;</p>
<p>tcp_nopush              on;</p>
<p>tcp_nodelay             on;</p>
<p>######################################################################</p>
<p>server {</p>
<p>listen       80;</p>
<p>server_name  192.168.1.105;</p>
<p>root    /usr/local/nginx/html/flv_file/;</p>
<p>limit_rate_after 5m;    ####在flv视频文件下载了5M以后开始限速</p>
<p>limit_rate 512k;         ####速度限制为512K</p>
<p>index   index.html;</p>
<p>charset utf-8;</p>
<p>location ~ \.flv {</p>
<p>flv;</p>
<p>}</p>
<p>error_page   500 502 503 504  /50x.html;</p>
<p>location = /50x.html {</p>
<p>root   html;</p>
<p>}</p>
<p>}</p>
<p>}</p>
<p>4）、基本上已经设置完毕，但是此时我们<a href="http://softtest.chinaitlab.com/">测试</a>的时候还需要一个支持拖拽播放的flash播放器，开源的JW Player就可以实现这样的功能，我将编译的播放器上传上来，供大家下载：</p>
<p>下载链接：<a href="http://blogimg.chinaunix.net/blog/upfile2/100607142612.rar">http://blogimg.chinaunix.net/blog/upfile2/100607142612.rar</a></p>
<p>下载播放器后，上传到上面设置的/usr/local/nginx/html/flv_file/目录下，闭关把flv视频文件也放到该目录下！</p>
<p>5）、启动nginx后<a href="http://softtest.chinaitlab.com/">测试</a>：</p>
<p><a href="http://192.168.1.105/player.swf?type=http&amp;file=test1.flv">http://192.168.1.105/player.swf?type=http&amp;file=test1.flv</a></p>
<p>说明： #我的ip是192.168.1.105</p>
<p>#player.swf是我的JW Player播放器</p>
<p>#http是表示居于http分发方式</p>
<p>#test1.flv是我的flv视频文件</p>
<p>效果如下图：</p>
<p><img title="nginx搭建flv流媒体服务器 - Gregory - flex进行中" src="http://linux.chinaitlab.com/UploadFiles_7565/201006/20100608094403852.jpg" alt="nginx搭建flv流媒体服务器 - Gregory - flex进行中" /></p>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.inginx.com/nginx-flv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DirectAdmin安装Nginx方法</title>
		<link>http://www.inginx.com/directadmin-install-nginx/</link>
		<comments>http://www.inginx.com/directadmin-install-nginx/#comments</comments>
		<pubDate>Mon, 20 Sep 2010 00:02:11 +0000</pubDate>
		<dc:creator>iNginx</dc:creator>
				<category><![CDATA[Nginx 安装使用]]></category>
		<category><![CDATA[DirectAdmin]]></category>

		<guid isPermaLink="false">http://www.inginx.com/?p=177</guid>
		<description><![CDATA[下载nginx。
下载 后，编译。
tar zxvf nginx-0.7.66.tar.gz
cd nginx-0.7.66
./configure &#8211;prefix=/usr/local/nginx &#8211;user=nginx &#8211;group=nginx &#8211;with-http_stub_status_module &#8211;with-http_ssl_module
make
make install
然后先不要启动nginx，对conf文件做一些修改，主要是对缓存部分的设置。
vi /usr/local/nginx/conf/nginx.conf
里面对缓存的设置部分如下。写在http段里
    proxy_temp_path  /usr/local/nginx/proxy_temp;
    proxy_cache_path /usr/local/nginx/proxycache levels=1:2 keys_zone=CachePool:300m inactive=1d max_size=3g;
    [...]]]></description>
			<content:encoded><![CDATA[<p>下载nginx。<br />
下载 后，编译。<br />
tar zxvf nginx-0.7.66.tar.gz<br />
cd nginx-0.7.66<br />
./configure &#8211;prefix=/usr/local/nginx &#8211;user=nginx &#8211;group=nginx &#8211;with-http_stub_status_module &#8211;with-http_ssl_module<br />
make<br />
make install<br />
然后先不要启动nginx，对conf文件做一些修改，主要是对缓存部分的设置。<br />
vi /usr/local/nginx/conf/nginx.conf<br />
里面对缓存的设置部分如下。写在http段里<br />
    proxy_temp_path  /usr/local/nginx/proxy_temp;<br />
    proxy_cache_path /usr/local/nginx/proxycache levels=1:2 keys_zone=CachePool:300m inactive=1d max_size=3g;</p>
<p>    server {<br />
        listen       真实的公网IP:80;<br />
        server_name  localhost;</p>
<p>        location / {<br />
                proxy_pass        http://127.0.0.2;<br />
                proxy_set_header  X-Real-IP  $remote_addr;<br />
                proxy_set_header  FORWARDED-FOR  $remote_addr;<br />
                proxy_set_header Host $host;</p>
<p>                location ~* \.(js|css|gif|png|bmp|jpeg|jpg|swf)$ {<br />
                        proxy_pass        http://127.0.0.2;<br />
                        proxy_set_header  X-Real-IP  $remote_addr;<br />
                        proxy_set_header Host $host;</p>
<p>                        proxy_cache CachePool;<br />
                        #proxy_cache_key $host$request_uri$http_if_modified_since;<br />
                        proxy_cache_key $host$request_uri;<br />
                        proxy_cache_valid 5m;<br />
                }<br />
        }<br />
一些解释<br />
max_size=3g 缓存占用的最大空间3G<br />
proxy_pass http://127.0.0.2 回头我们要把apache的监听改成监听这个IP的80端口。当然，也可以用其他端口和其他IP，这个自由设置。<br />
proxy_cache_valid 5m; 缓存生存时间5分钟。这个时间的设置也要根据主机上的站点来具体设置，没有任何可以作为标准的说法。</p>
<p>设置完后，先停止 httpd。<br />
/etc/init.d/httpd stop<br />
/etc/init.d/directadmin stop<br />
directadmin 也一定是要停的，不然会自动启动httpd进程。<br />
修改文件<br />
/etc/httpd/conf/extra/httpd-vhosts.conf<br />
对应添加修改成<br />
LogFormat &#8220;%O \&#8221;%r\&#8221;" homedir<br />
NameVirtualHost 127.0.0.2:80<br />
NameVirtualHost 真实公网IP:443<br />
<VirtualHost 127.0.0.2:80><br />
    ServerAdmin webmaster@localhost<br />
    AliasMatch ^/~([^/]+)(/.*)* /home/$1/public_html$2<br />
    DocumentRoot /var/www/html<br />
    ServerName localhost<br />
    ScriptAlias /cgi-bin/ /var/www/cgi-bin/<br />
    CustomLog /var/log/httpd/homedir.log homedir<br />
</VirtualHost><br />
然 后安装一个apache需要的小模块。<br />
wget http://www.openinfo.co.uk/apache/extract_forwarded-2.0.2.tar.gz<br />
tar zxvf extract_forwarded-2.0.2.tar.gz<br />
cd extract_forwarded<br />
apxs -c -i -a mod_extract_forwarded.c<br />
结束后修改/etc/httpd/conf/httpd.conf</p>
<p>ServerRoot &#8220;/etc/httpd&#8221;<br />
Listen 127.0.0.2:80</p>
<p>#LoadModule dummy_module /usr/lib/apache/mod_dummy.so<br />
#LoadModule php5_module        /usr/lib/apache/libphp5.so<br />
LoadModule extract_forwarded_module /usr/lib/apache/mod_extract_forwarded.so<br />
MEForder refuse,accept<br />
MEFrefuse all<br />
MEFaccept 127.0.0.2<br />
Include /etc/httpd/conf/extra/httpd-phpmodules.conf<br />
FileETag none</p>
<p>User apache<br />
Group apache</p>
<p>ServerAdmin admin@localhost<br />
DocumentRoot &#8220;/var/www/html&#8221;</p>
<p>接下来是修改directadmin里已经建立的用户的对应配置。<br />
cd /usr/local/directadmin/data/users<br />
find -name &#8216;*.conf&#8217; | xargs perl -pi -e &#8217;s|真实公网IP|127.0.0.2|g&#8217;<br />
然后修改directadmin的模板，让以后新添加的用户也自动启用对应的设置。<br />
进 入/usr/local/directadmin/data/templates/custom  自定义模板的地方<br />
里面需要从上层目录拷贝6个 文件进来。<br />
ips_virtual_host.conf<br />
virtual_host2.conf<br />
virtual_host.conf<br />
redirect_virtual_host.conf<br />
virtual_host2_sub.conf<br />
virtual_host_sub.conf<br />
然后对应修改这六个文件中的部 分，主要就是类似<VirtualHost |IP|:80>的地方修改成<VirtualHost 127.0.0.2:80>，让directadmin生成用户配置文件的时候不写入真实IP，直接用127.0.0.2来代替。<br />
然后就可 以了，检查确认无误。<br />
/etc/init.d/httpd start<br />
/usr/local/nginx/sbin/nginx  （启动nginx）<br />
检查进程，里面已经有nginx和httpd同时在跑了。初次的缓存生成后，用户再次读取静态文件的时候，就不需要麻烦 apache去了。<br />
nginx的高级设置，这个就另外自行查看资料了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.inginx.com/directadmin-install-nginx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nginx 最新版本  0.8.38 发布</title>
		<link>http://www.inginx.com/nginx-0-8-38/</link>
		<comments>http://www.inginx.com/nginx-0-8-38/#comments</comments>
		<pubDate>Wed, 26 May 2010 03:57:44 +0000</pubDate>
		<dc:creator>iNginx</dc:creator>
				<category><![CDATA[Nginx 最新下载]]></category>
		<category><![CDATA[下载]]></category>

		<guid isPermaLink="false">http://www.inginx.com/?p=173</guid>
		<description><![CDATA[下载地址：nginx-0.8.38 nginx/Windows-0.8.38
http://nginx.org/download/nginx-0.8.38.zip
改进内容：
*) Feature: the &#8220;proxy_no_cache&#8221; and &#8220;fastcgi_no_cache&#8221; directives.
*) Feature: now the &#8220;rewrite&#8221; directive does a redirect automatically if the $scheme variable is used.
*) Bugfix: now &#8220;limit_req&#8221; delay directive conforms to [...]]]></description>
			<content:encoded><![CDATA[<p>下载地址：nginx-0.8.38 nginx/Windows-0.8.38</p>
<p>http://nginx.org/download/nginx-0.8.38.zip</p>
<p>改进内容：</p>
<p>*) Feature: the &#8220;proxy_no_cache&#8221; and &#8220;fastcgi_no_cache&#8221; directives.<br />
*) Feature: now the &#8220;rewrite&#8221; directive does a redirect automatically if the $scheme variable is used.<br />
*) Bugfix: now &#8220;limit_req&#8221; delay directive conforms to the described algorithm.<br />
*) Bugfix: the $uid_got variable might not be used in the SSI and perl modules.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.inginx.com/nginx-0-8-38/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Nginx重大漏洞,文件类型错误解析</title>
		<link>http://www.inginx.com/nginx-securit/</link>
		<comments>http://www.inginx.com/nginx-securit/#comments</comments>
		<pubDate>Fri, 21 May 2010 02:36:34 +0000</pubDate>
		<dc:creator>iNginx</dc:creator>
				<category><![CDATA[Nginx 疑难解决]]></category>
		<category><![CDATA[漏洞]]></category>

		<guid isPermaLink="false">http://www.inginx.com/?p=170</guid>
		<description><![CDATA[漏洞介绍：nginx是一款高性能的web服务器，使用非常广泛，其不仅经常被用作反向代理，也可以非常好的支持PHP的运行。80sec发现其中存在一个较为严重的安全问题，默认情况下可能导致服务器错误的将任何类型的文件以PHP的方式进行解析，这将导致严重的安全问题，使得恶意的攻击者可能攻陷支持php的nginx服务器。
漏洞分析：nginx默认以cgi的方式支持php的运行，譬如在配置文件当中可以以
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
的方式支持对php的解析，location对请求进行选择的时候会使用URI环境变量进行选择，其中传递到后端Fastcgi的关键变量SCRIPT_FILENAME由nginx生成的$fastcgi_script_name决定，而通过分析可以看到$fastcgi_script_name是直接由URI环境变量控制的，这里就是产生问题的点。而为了较好的支持PATH_INFO的提取，在PHP的配置选项里存在cgi.fix_pathinfo选项，其目的是为了从SCRIPT_FILENAME里取出真正的脚本名。
那么假设存在一个http://www.80sec.com/80sec.jpg，我们以如下的方式去访问
http://www.80sec.com/80sec.jpg/80sec.php
将会得到一个URI
/80sec.jpg/80sec.php
经过location指令，该请求将会交给后端的fastcgi处理，nginx为其设置环境变量SCRIPT_FILENAME，内容为
/scripts/80sec.jpg/80sec.php
而在其他的webserver如lighttpd当中，我们发现其中的SCRIPT_FILENAME被正确的设置为
/scripts/80sec.jpg
所以不存在此问题。
后端的fastcgi在接受到该选项时，会根据fix_pathinfo配置决定是否对SCRIPT_FILENAME进行额外的处理，一般情况下如果不对fix_pathinfo进行设置将影响使用PATH_INFO进行路由选择的应用，所以该选项一般配置开启。Php通过该选项之后将查找其中真正的脚本文件名字，查找的方式也是查看文件是否存在，这个时候将分离出SCRIPT_FILENAME和PATH_INFO分别为
/scripts/80sec.jpg和80sec.php
最后，以/scripts/80sec.jpg作为此次请求需要执行的脚本，攻击者就可以实现让nginx以php来解析任何类型的文件了。
POC： 访问一个nginx来支持php的站点，在一个任何资源的文件如robots.txt后面加上/80sec.php，这个时候你可以看到如下的区别：
访问http://www.80sec.com/robots.txt
HTTP/1.1 200 OK
Server: nginx/0.6.32
Date: Thu, 20 May 2010 10:05:30 GMT
Content-Type: text/plain
Content-Length: 18
Last-Modified: Thu, 20 May 2010 06:26:34 GMT
Connection: keep-alive
Keep-Alive: timeout=20
Accept-Ranges: [...]]]></description>
			<content:encoded><![CDATA[<p>漏洞介绍：nginx是一款高性能的web服务器，使用非常广泛，其不仅经常被用作反向代理，也可以非常好的支持PHP的运行。80sec发现其中存在一个较为严重的安全问题，默认情况下可能导致服务器错误的将任何类型的文件以PHP的方式进行解析，这将导致严重的安全问题，使得恶意的攻击者可能攻陷支持php的nginx服务器。</p>
<p>漏洞分析：nginx默认以cgi的方式支持php的运行，譬如在配置文件当中可以以</p>
<p>location ~ \.php$ {<br />
root html;<br />
fastcgi_pass 127.0.0.1:9000;<br />
fastcgi_index index.php;<br />
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;<br />
include fastcgi_params;<br />
}</p>
<p>的方式支持对php的解析，location对请求进行选择的时候会使用URI环境变量进行选择，其中传递到后端Fastcgi的关键变量SCRIPT_FILENAME由nginx生成的$fastcgi_script_name决定，而通过分析可以看到$fastcgi_script_name是直接由URI环境变量控制的，这里就是产生问题的点。而为了较好的支持PATH_INFO的提取，在PHP的配置选项里存在cgi.fix_pathinfo选项，其目的是为了从SCRIPT_FILENAME里取出真正的脚本名。<br />
那么假设存在一个http://www.80sec.com/80sec.jpg，我们以如下的方式去访问</p>
<p>http://www.80sec.com/80sec.jpg/80sec.php</p>
<p>将会得到一个URI</p>
<p>/80sec.jpg/80sec.php</p>
<p>经过location指令，该请求将会交给后端的fastcgi处理，nginx为其设置环境变量SCRIPT_FILENAME，内容为</p>
<p>/scripts/80sec.jpg/80sec.php</p>
<p>而在其他的webserver如lighttpd当中，我们发现其中的SCRIPT_FILENAME被正确的设置为</p>
<p>/scripts/80sec.jpg</p>
<p>所以不存在此问题。<br />
后端的fastcgi在接受到该选项时，会根据fix_pathinfo配置决定是否对SCRIPT_FILENAME进行额外的处理，一般情况下如果不对fix_pathinfo进行设置将影响使用PATH_INFO进行路由选择的应用，所以该选项一般配置开启。Php通过该选项之后将查找其中真正的脚本文件名字，查找的方式也是查看文件是否存在，这个时候将分离出SCRIPT_FILENAME和PATH_INFO分别为</p>
<p>/scripts/80sec.jpg和80sec.php</p>
<p>最后，以/scripts/80sec.jpg作为此次请求需要执行的脚本，攻击者就可以实现让nginx以php来解析任何类型的文件了。</p>
<p>POC： 访问一个nginx来支持php的站点，在一个任何资源的文件如robots.txt后面加上/80sec.php，这个时候你可以看到如下的区别：</p>
<p>访问http://www.80sec.com/robots.txt</p>
<p>HTTP/1.1 200 OK<br />
Server: nginx/0.6.32<br />
Date: Thu, 20 May 2010 10:05:30 GMT<br />
Content-Type: text/plain<br />
Content-Length: 18<br />
Last-Modified: Thu, 20 May 2010 06:26:34 GMT<br />
Connection: keep-alive<br />
Keep-Alive: timeout=20<br />
Accept-Ranges: bytes</p>
<p>访问访问http://www.80sec.com/robots.txt/80sec.php</p>
<p>HTTP/1.1 200 OK<br />
Server: nginx/0.6.32<br />
Date: Thu, 20 May 2010 10:06:49 GMT<br />
Content-Type: text/html<br />
Transfer-Encoding: chunked<br />
Connection: keep-alive<br />
Keep-Alive: timeout=20<br />
X-Powered-By: PHP/5.2.6</p>
<p>其中的Content-Type的变化说明了后端负责解析的变化，该站点就可能存在漏洞。</p>
<p>漏洞厂商：http://www.nginx.org</p>
<p>解决方案：</p>
<p>我们已经尝试联系官方，但是此前你可以通过以下的方式来减少损失</p>
<p>关闭cgi.fix_pathinfo为0</p>
<p>或者</p>
<p>if ( $fastcgi_script_name ~ \..*\/.*php ) {<br />
return 403;<br />
}</p>
<p>PS: 鸣谢laruence大牛在分析过程中给的帮助<br />
转载于：nginx文件类型错误解析漏洞:http://www.80sec.com/nginx-securit.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.inginx.com/nginx-securit/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Nginx 目录访问末尾自动加斜线 /</title>
		<link>http://www.inginx.com/nginx-url-end/</link>
		<comments>http://www.inginx.com/nginx-url-end/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 22:14:47 +0000</pubDate>
		<dc:creator>iNginx</dc:creator>
				<category><![CDATA[Nginx 优化技巧]]></category>
		<category><![CDATA[URL]]></category>

		<guid isPermaLink="false">http://www.inginx.com/?p=165</guid>
		<description><![CDATA[默认配置当你访问http://www.inginx.com/dir 时不会加”/”
常见做法       if (-d $request_filename){
   rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
       }更佳的替代方法
optimize_server_names off;＃优化服务器名称：关
server_name_in_redirect off;＃服务器名称重定向：关
http://wiki.codemongers.com/NginxHttpCoreModule#optimize_server_names
]]></description>
			<content:encoded><![CDATA[<p>默认配置当你访问http://www.inginx.com/dir 时不会加”/”</p>
<p>常见做法       if (-d $request_filename){<br />
   rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;<br />
       }更佳的替代方法</p>
<p>optimize_server_names off;＃优化服务器名称：关<br />
server_name_in_redirect off;＃服务器名称重定向：关</p>
<p>http://wiki.codemongers.com/NginxHttpCoreModule#optimize_server_names</p>
]]></content:encoded>
			<wfw:commentRss>http://www.inginx.com/nginx-url-end/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

