﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-不可不说</title><link>http://www.blogjava.net/bukebushuo/</link><description>随心所欲，无往不利！</description><language>zh-cn</language><lastBuildDate>Thu, 08 Jan 2009 07:11:38 GMT</lastBuildDate><pubDate>Thu, 08 Jan 2009 07:11:38 GMT</pubDate><ttl>60</ttl><item><title>Apache 安装后提示80端口被占用，都是迅雷惹的祸！</title><link>http://www.blogjava.net/bukebushuo/archive/2009/01/04/249795.html</link><dc:creator>蓝剑</dc:creator><author>蓝剑</author><pubDate>Sun, 04 Jan 2009 14:12:00 GMT</pubDate><guid>http://www.blogjava.net/bukebushuo/archive/2009/01/04/249795.html</guid><wfw:comment>http://www.blogjava.net/bukebushuo/comments/249795.html</wfw:comment><comments>http://www.blogjava.net/bukebushuo/archive/2009/01/04/249795.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bukebushuo/comments/commentRss/249795.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bukebushuo/services/trackbacks/249795.html</trackback:ping><description><![CDATA[今天在机器上重新安装Apache 2.2.11，安装完后提示80端口被占用，很奇怪，<br />
机器上没有运行任何服务啊，原先装过也没问题，使用netstate命令查看了一下，<br />
还真有一个占用80的，取得PID，在任务管理器中找了一下，竟然是迅雷在占用！<br />
关掉迅雷，启动Apache，一切顺利。严重鄙视迅雷！！！<br />
<br />
<img src ="http://www.blogjava.net/bukebushuo/aggbug/249795.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bukebushuo/" target="_blank">蓝剑</a> 2009-01-04 22:12 <a href="http://www.blogjava.net/bukebushuo/archive/2009/01/04/249795.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Strust2 2.1.3终于要发布了！</title><link>http://www.blogjava.net/bukebushuo/archive/2008/12/27/248662.html</link><dc:creator>蓝剑</dc:creator><author>蓝剑</author><pubDate>Sat, 27 Dec 2008 11:48:00 GMT</pubDate><guid>http://www.blogjava.net/bukebushuo/archive/2008/12/27/248662.html</guid><wfw:comment>http://www.blogjava.net/bukebushuo/comments/248662.html</wfw:comment><comments>http://www.blogjava.net/bukebushuo/archive/2008/12/27/248662.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/bukebushuo/comments/commentRss/248662.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bukebushuo/services/trackbacks/248662.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Strust2的2.1.X的第一个GA版&nbsp;&nbsp;<a href='http://www.blogjava.net/bukebushuo/archive/2008/12/27/248662.html'>阅读全文</a><img src ="http://www.blogjava.net/bukebushuo/aggbug/248662.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bukebushuo/" target="_blank">蓝剑</a> 2008-12-27 19:48 <a href="http://www.blogjava.net/bukebushuo/archive/2008/12/27/248662.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MyEclipse 7.0 的注册机</title><link>http://www.blogjava.net/bukebushuo/articles/247023.html</link><dc:creator>蓝剑</dc:creator><author>蓝剑</author><pubDate>Thu, 18 Dec 2008 01:22:00 GMT</pubDate><guid>http://www.blogjava.net/bukebushuo/articles/247023.html</guid><wfw:comment>http://www.blogjava.net/bukebushuo/comments/247023.html</wfw:comment><comments>http://www.blogjava.net/bukebushuo/articles/247023.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bukebushuo/comments/commentRss/247023.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bukebushuo/services/trackbacks/247023.html</trackback:ping><description><![CDATA[从网上找到的，不知道好不好用，先存上，以后有机会测试一下。<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.io.BufferedReader;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.io.IOException;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.io.InputStreamReader;<br />
&nbsp;<br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;MyEclipseGen&nbsp;{<br />
</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;LL&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Decompiling&nbsp;this&nbsp;copyrighted&nbsp;software&nbsp;is&nbsp;a&nbsp;violation&nbsp;of&nbsp;both&nbsp;your&nbsp;license&nbsp;agreement&nbsp;and&nbsp;the&nbsp;Digital&nbsp;Millenium&nbsp;Copyright&nbsp;Act&nbsp;of&nbsp;1998&nbsp;(http://www.loc.gov/copyright/legislation/dmca.pdf).&nbsp;Under&nbsp;section&nbsp;1204&nbsp;of&nbsp;the&nbsp;DMCA,&nbsp;penalties&nbsp;range&nbsp;up&nbsp;to&nbsp;a&nbsp;$500,000&nbsp;fine&nbsp;or&nbsp;up&nbsp;to&nbsp;five&nbsp;years&nbsp;imprisonment&nbsp;for&nbsp;a&nbsp;first&nbsp;offense.&nbsp;Think&nbsp;about&nbsp;it;&nbsp;pay&nbsp;for&nbsp;a&nbsp;license,&nbsp;avoid&nbsp;prosecution,&nbsp;and&nbsp;feel&nbsp;better&nbsp;about&nbsp;yourself.</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;<br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;String&nbsp;getSerial(String&nbsp;userId,&nbsp;String&nbsp;licenseNum)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;java.util.Calendar&nbsp;cal&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;java.util.Calendar.getInstance();<br />
&nbsp;&nbsp;&nbsp;cal.add(</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;cal.add(</span><span style="color: #000000;">6</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;java.text.NumberFormat&nbsp;nf&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;java.text.DecimalFormat(</span><span style="color: #000000;">"</span><span style="color: #000000;">000</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;licenseNum&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;nf.format(Integer.valueOf(licenseNum));<br />
&nbsp;&nbsp;&nbsp;String&nbsp;verTime&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;StringBuilder(</span><span style="color: #000000;">"</span><span style="color: #000000;">-</span><span style="color: #000000;">"</span><span style="color: #000000;">).append(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;java.text.SimpleDateFormat(</span><span style="color: #000000;">"</span><span style="color: #000000;">yyMMdd</span><span style="color: #000000;">"</span><span style="color: #000000;">).format(cal.getTime()))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.append(</span><span style="color: #000000;">"</span><span style="color: #000000;">0</span><span style="color: #000000;">"</span><span style="color: #000000;">).toString();<br />
&nbsp;&nbsp;&nbsp;String&nbsp;type&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">YE3MP-</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;String&nbsp;need&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;StringBuilder(userId.substring(</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">)).append(type)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.append(</span><span style="color: #000000;">"</span><span style="color: #000000;">300</span><span style="color: #000000;">"</span><span style="color: #000000;">).append(licenseNum).append(verTime).toString();<br />
&nbsp;&nbsp;&nbsp;String&nbsp;dx&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;StringBuilder(need).append(LL).append(userId)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.toString();<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;suf&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.decode(dx);<br />
&nbsp;&nbsp;&nbsp;String&nbsp;code&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;StringBuilder(need).append(String.valueOf(suf))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.toString();<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.change(code);<br />
}<br />
&nbsp;<br />
</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;decode(String&nbsp;s)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">[]&nbsp;ac;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;j;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;k;<br />
&nbsp;&nbsp;&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;ac&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;s.toCharArray();<br />
&nbsp;&nbsp;&nbsp;j&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;k&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;ac.length;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;(j&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;k)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">31</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;i)&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;ac[j];<br />
&nbsp;&nbsp;&nbsp;&nbsp;j</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;Math.abs(i);<br />
}<br />
&nbsp;<br />
</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;String&nbsp;change(String&nbsp;s)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[]&nbsp;abyte0;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">[]&nbsp;ac;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;k;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;j;<br />
&nbsp;&nbsp;&nbsp;abyte0&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;s.getBytes();<br />
&nbsp;&nbsp;&nbsp;ac&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">[s.length()];<br />
&nbsp;&nbsp;&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;k&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;abyte0.length;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;(i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;k)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;abyte0[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;((j&nbsp;</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">48</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;(j&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">57</span><span style="color: #000000;">))&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(((j&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">48</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">10</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">48</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;((j&nbsp;</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">65</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;(j&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">90</span><span style="color: #000000;">))&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(((j&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">65</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">13</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">26</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">65</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;((j&nbsp;</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">97</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;(j&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">122</span><span style="color: #000000;">))&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(((j&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">97</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">13</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">26</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">97</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;ac[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">char</span><span style="color: #000000;">)&nbsp;j;<br />
&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;String.valueOf(ac);<br />
}<br />
&nbsp;<br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;MyEclipseGen()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">super</span><span style="color: #000000;">();<br />
}<br />
&nbsp;<br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">please&nbsp;input&nbsp;register&nbsp;name:</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;BufferedReader&nbsp;reader&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;BufferedReader(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;InputStreamReader(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.in));<br />
&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;userId&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;userId&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;reader.readLine();<br />
&nbsp;&nbsp;&nbsp;&nbsp;MyEclipseGen&nbsp;myeclipsegen&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;MyEclipseGen();<br />
&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;res&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;myeclipsegen.getSerial(userId,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">5</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">Serial:</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;res);<br />
&nbsp;&nbsp;&nbsp;&nbsp;reader.readLine();<br />
&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">&nbsp;(IOException&nbsp;ex)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;}<br />
}<br />
}</span></div>
<img src ="http://www.blogjava.net/bukebushuo/aggbug/247023.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bukebushuo/" target="_blank">蓝剑</a> 2008-12-18 09:22 <a href="http://www.blogjava.net/bukebushuo/articles/247023.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>去掉MyEclipse(Eclipse)中的Subclipse保存的用户名密码</title><link>http://www.blogjava.net/bukebushuo/archive/2008/09/19/229934.html</link><dc:creator>蓝剑</dc:creator><author>蓝剑</author><pubDate>Fri, 19 Sep 2008 06:35:00 GMT</pubDate><guid>http://www.blogjava.net/bukebushuo/archive/2008/09/19/229934.html</guid><wfw:comment>http://www.blogjava.net/bukebushuo/comments/229934.html</wfw:comment><comments>http://www.blogjava.net/bukebushuo/archive/2008/09/19/229934.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/bukebushuo/comments/commentRss/229934.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bukebushuo/services/trackbacks/229934.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在Eclipse使用SVN的过程中大多数人往往习惯把访问SVN的用户名密码自动保存起来<br>以便下次自动使用，不要再次手工输入，但是有些时候需要变更密码或者用户名，<br>这时候怎么办？&nbsp;&nbsp;<a href='http://www.blogjava.net/bukebushuo/archive/2008/09/19/229934.html'>阅读全文</a><img src ="http://www.blogjava.net/bukebushuo/aggbug/229934.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bukebushuo/" target="_blank">蓝剑</a> 2008-09-19 14:35 <a href="http://www.blogjava.net/bukebushuo/archive/2008/09/19/229934.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用javassist修改class文件</title><link>http://www.blogjava.net/bukebushuo/articles/229703.html</link><dc:creator>蓝剑</dc:creator><author>蓝剑</author><pubDate>Thu, 18 Sep 2008 07:26:00 GMT</pubDate><guid>http://www.blogjava.net/bukebushuo/articles/229703.html</guid><wfw:comment>http://www.blogjava.net/bukebushuo/comments/229703.html</wfw:comment><comments>http://www.blogjava.net/bukebushuo/articles/229703.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bukebushuo/comments/commentRss/229703.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bukebushuo/services/trackbacks/229703.html</trackback:ping><description><![CDATA[Firestorm是一个用JAVA写的代码生成工具，可以替你节省很多的代码量，可以说同类软件中功能最强的一个。<br />
<br />
Firestorm是一个用JAVA写的代码生成工具，可以替你节省很多的代码量，可以说同类软件中功能最强的一个。<br />
你可以在网上下载到最新的2.3试用版本，同时网站会发给你一个试用的license文件。既然是试用，<br />
那么在使用上肯定有一定的限制。主要限制有3个：<br />
&nbsp;&nbsp; &nbsp;1.只能最多生成5张表的DAO；<br />
&nbsp;&nbsp; &nbsp;2.有时间限制；<br />
&nbsp;&nbsp; &nbsp;3.不能自己定制代码生成；<br />
<br />
为了能够更好的试用这个软件，我得改改它，去掉这些限制。将firestorm.jar打开后，可以看到它使用了<br />
混淆器进行代码保护，不同于大多数的混淆器生成的文件，它的class和package大部分都是以关键字来命名，<br />
所以如果你用JAD之类的工具把它反编译后是不能再把它编译成功，编译器会提示出错误。<br />
<br />
反编译后，找到几个有关注册的关键文件，发现它使用的是数字签名技术来做的保护，所以想逆向找出<br />
注册码的计算方法是不可行的了，只能通过修改文件的方法来破解。通常我们是先反编译，然后再修改<br />
反编译后生成的原文件，最后再重新编译。但是由于文件名和包名的关系我们无法进行编译，除非把它的<br />
这些&#8216;非法'的文件名和包名全部改成符合java语言规范的名称，由于类，包众多，互相调用也很<br />
频繁，所以这种方法几乎不可能的。<br />
<br />
另外一种方法就是使用softice之类的调试软件来破解，不过这个脱离JAVA的范畴，这里不做讨论。<br />
<br />
还有一种方法可能很少有人用，就是先反编译得到原文件，然后找到关键的方法后修改它的字节码，<br />
也就是class文件，这中方法往往需要你知道一些有关CLASS文件格式方面的知识（如果没有也不用担心），<br />
有许多的处理字节码的工具可以帮助你，比较流行的这类工具主要有：apache.org的BCEL; <br />
jboss.com的javassist；objectweb.org的asm。都是出身名门哈。这3个工具各有特点，<br />
这次我选用javassist，因为它修改class文件最方便，甚至不需要懂得字节码和class文件格式。<br />
<br />
让我们来看看具体步骤：<br />
<br />
<br />
step1:<br />
&nbsp;&nbsp; &nbsp;下载并安装FIRESTORM。<br />
step2:<br />
&nbsp;&nbsp; &nbsp;反编译jar文件，阅读代码，找到关键的方法。当然，我这里写出来，你就不用再麻烦了。（其实这步是最<br />
&nbsp;&nbsp; &nbsp;麻烦的）。<br />
&nbsp;&nbsp; &nbsp;找到com.codefutures.if.if文件中的方法<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <font color="#0066ff">&nbsp;public static boolean a(java.security.PublicKey publickey, <br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;byte abyte0[], byte abyte1[])<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;throws java.security.NoSuchAlgorithmException, <br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;java.security.NoSuchProviderException, <br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;java.security.InvalidKeyException, <br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;java.security.SignatureException {<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;java.security.Signature signature =
java.security.Signature.getInstance("SHA1withDSA", "SUN");<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;signature.initVerify(publickey);<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;signature.update(abyte0);<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return signature.verify(abyte1);<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />
</font><br />
&nbsp;&nbsp; &nbsp;这个方法是对公钥进行检验，修改的思路就是直接让他返回一个true.<br />
<br />
step2:<br />
&nbsp;&nbsp; &nbsp;收到firestorm.license文件后不要急着安装，先修改如下：<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<font color="#0066ff">&lt;custom-codegen&gt;no&lt;/custom-codegen&gt;</font><br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;改为<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <font color="#0066ff">&nbsp;&lt;custom-codegen&gt;yes&lt;/custom-codegen&gt;</font><br />
<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<font color="#0066ff">&lt;restriction&gt;5&lt;/restriction&gt;</font><br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;改为<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<font color="#0066ff">&lt;restriction&gt;none&lt;/restriction&gt;</font><br />
<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <font color="#0066ff">&nbsp;&lt;expiry-date&gt;[日期]&lt;/expiry-date&gt;</font><br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;改为<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <font color="#0066ff">&nbsp;&lt;expiry-date&gt;never&lt;/expiry-date&gt;</font><br />
<br />
&nbsp;&nbsp; &nbsp;修改后放到firestorm的安装路径的license目录。<br />
<br />
step3:<br />
&nbsp;&nbsp; &nbsp;修改com.codefutures.if.if的class文件.这里我们需要写一个小程序来完成实现：<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<font color="#0066ff">import javassist.ClassPool;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;import javassist.CtClass;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;import javassist.CtMethod;<br />
<br />
<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;public class Test {<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;public static void main(String[] args) throws Exception {<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ClassPool pool = ClassPool.getDefault();<br />
<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<font color="#00cc00">//设置目标类的路径，确保能够找到需要修改的类，这里我指向firestorm.jar</font><br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<font color="#00cc00">//解包后的路径</font><br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;pool.insertClassPath("d:/work/firestorm/firestorm") ;&nbsp;&nbsp;
&nbsp;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <font color="#00cc00">&nbsp;//获得要修改的类</font><br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;CtClass cc = pool.get("com.codefutures.if.if");<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<font color="#00cc33">//设置方法需要的参数</font><br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;CtClass[] param = new CtClass[3] ;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;param[0] = pool.get("java.security.PublicKey") ;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;param[1] = pool.get("byte[]") ;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;param[2] = pool.get("byte[]") ;<br />
<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<font color="#00cc00">//得到方法</font><br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;CtMethod m = cc.getDeclaredMethod("a", param);<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <font color="#00cc00">&nbsp;//插入新的代码</font><br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;m.insertBefore("{return true ;}") ;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<font color="#00cc00">//保存到文件里</font><br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;cc.writeFile() ;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}</font>
<br />
&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp; &nbsp;修改完后，你可以反编译修改过的的class文件，看看代码是否加入成功。<br />
<br />
step4:<br />
&nbsp;&nbsp; &nbsp;将所有的class文件重新打包成firestorm.jar，然后替换<br />
&nbsp;&nbsp; &nbsp;[firestorm安装路径]/lib/firestorm.jar，再启动firestorm即可。
<img src ="http://www.blogjava.net/bukebushuo/aggbug/229703.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bukebushuo/" target="_blank">蓝剑</a> 2008-09-18 15:26 <a href="http://www.blogjava.net/bukebushuo/articles/229703.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>apache的流量控制模块bw_mod进行带宽控制</title><link>http://www.blogjava.net/bukebushuo/articles/229110.html</link><dc:creator>蓝剑</dc:creator><author>蓝剑</author><pubDate>Tue, 16 Sep 2008 03:17:00 GMT</pubDate><guid>http://www.blogjava.net/bukebushuo/articles/229110.html</guid><wfw:comment>http://www.blogjava.net/bukebushuo/comments/229110.html</wfw:comment><comments>http://www.blogjava.net/bukebushuo/articles/229110.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bukebushuo/comments/commentRss/229110.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bukebushuo/services/trackbacks/229110.html</trackback:ping><description><![CDATA[随着在线人数的不断增加，WDA的附件每天增量很多，流量越来越大，从MRTG监控到，忙时达到10M，导致空间商限制了WDA的流量。<br />
分析流量大的原因，主要是因为上传和下载附件占用了带宽，找了很多解决办法，终于用apache的bw_mod模块解决了。<br />
bw_mod是for apache2的，首先到<a href="http://apache.ivn.cl/">http://apache.ivn.cl/</a>下载最新的bw_mod模块，目前是<font face="Arial">bw_mod v0.6。<br />
</font>　　　然后运行apxs -i -a -c bw_mod-0.6.c，apxs请用绝对路径。此命令会自动安装bw_mod，并在apache配置文件httpd.conf自动加入<br />
LoadModule bw_module&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; modules/bw_mod-0.6.so<br />
安装完成后，会在modules目录下生成bw_mod-0.6.so 文件。<br />
如果安装过程没有出错的话，就可以开始进行设置了。<br />
在httpd.conf中的LoadModule bw_module&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; modules/bw_mod-0.6.so&nbsp;&nbsp;&nbsp;下面加入以下设置指令：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BandWidthModule On&nbsp;&nbsp;&nbsp;&nbsp;<br />
#启动bw_mod模块<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BandWidth&nbsp; all 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #总的带宽不用限制<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LargeFileLimit .rar 30 23000<br />
＃限制所有大于30K的后缀名为.rar的文件的速率为23000字节/秒，即23K/秒<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LargeFileLimit .mp3 30 23000<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LargeFileLimit .wav 30 23000<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LargeFileLimit .jpg 10 27000<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LargeFileLimit .gif 5 27000<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LargeFileLimit .zip 50 30000<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LargeFileLimit .sis 50 30000<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LargeFileLimit .exe 50 30000<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 安装完毕后，网站速度有明显好转。
<img src ="http://www.blogjava.net/bukebushuo/aggbug/229110.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bukebushuo/" target="_blank">蓝剑</a> 2008-09-16 11:17 <a href="http://www.blogjava.net/bukebushuo/articles/229110.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>apache限制并发数 IP 带宽 </title><link>http://www.blogjava.net/bukebushuo/articles/229104.html</link><dc:creator>蓝剑</dc:creator><author>蓝剑</author><pubDate>Tue, 16 Sep 2008 02:56:00 GMT</pubDate><guid>http://www.blogjava.net/bukebushuo/articles/229104.html</guid><wfw:comment>http://www.blogjava.net/bukebushuo/comments/229104.html</wfw:comment><comments>http://www.blogjava.net/bukebushuo/articles/229104.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bukebushuo/comments/commentRss/229104.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bukebushuo/services/trackbacks/229104.html</trackback:ping><description><![CDATA[<div id="postmessage_539"><span href="http://jeck2046.blog.51cto.com/tag.php?name=%CF%DE%D6%C6">限制</span>并发数<br />
<span href="http://jeck2046.blog.51cto.com/tag.php?name=%CF%C2%D4%D8">下载</span>模块：<br />
<br />
到官方网址： <a href="http://www.nowhere-land.org/programs/mod_vhost_limit/" target="_blank">http://www.nowhere-land.org/programs/mod_vhost_limit/</a>下载模块<br />
<br />
<a href="http://www.nowhere-land.org/prog" target="_blank">http://www.nowhere-land.org/prog</a> ... st_limit-0.4.tar.gz<br />
<br />
<span href="http://jeck2046.blog.51cto.com/tag.php?name=%B0%B2%D7%B0">安装</span>：<br />
apxs -c mod_vhost_limit.c -o /path/to/libexec/mod_vhost_limit.so<br />
<br />
在 <span href="http://jeck2046.blog.51cto.com/tag.php?name=httpd">httpd</span>.<span href="http://jeck2046.blog.51cto.com/tag.php?name=conf">conf</span> 加入：<br />
<br />
LoadModule vhost_limit_module libexec/mod_vhost_limit.so<br />
AddModule mod_vhost_limit.c<br />
<br />
<span href="http://jeck2046.blog.51cto.com/tag.php?name=%C5%E4%D6%C3">配置</span>：<br />
<br />
MaxClients 150<br />
ExtendedStatus On<br />
<br />
NameVirtualHost *<br />
<br />
&lt;VIRTUALHOST * /&gt;<br />
&nbsp; &nbsp; ServerName&nbsp; &nbsp;&nbsp; &nbsp; server1<br />
&nbsp; &nbsp; DocumentRoot&nbsp; &nbsp;&nbsp;&nbsp;/some/where/1<br />
&nbsp; &nbsp; MaxVhostClients&nbsp;&nbsp;100<br />
<br />
<br />
&lt;VIRTUALHOST * /&gt;<br />
&nbsp; &nbsp; ServerName&nbsp; &nbsp;&nbsp; &nbsp; server2<br />
&nbsp; &nbsp; DocumentRoot&nbsp; &nbsp;&nbsp;&nbsp;/some/where/2<br />
&nbsp; &nbsp; MaxVhostClients&nbsp;&nbsp;30<br />
<br />
<br />
&lt;VIRTUALHOST * /&gt;<br />
&nbsp; &nbsp; ServerName&nbsp; &nbsp;&nbsp; &nbsp; server3<br />
&nbsp; &nbsp; DocumentRoot&nbsp; &nbsp;&nbsp;&nbsp;/some/where/3<br />
<br />
<br />
其中： server1 被限制为 100 个并发线程数。 server2 被限制为 30 个并发线程数。 server3 没有被限制。<br />
<br />
注：需 mod_status 的 ExtendedStatus On 支持！！<br />
<br />
如超出限制的并发数在客户端就会出现503错误 <br />
<br />
----------------------------------------------------------------------------------------------<br />
<br />
限制IP连接数<br />
<br />
到这里下载模块 <a href="http://dominia.org/djao/limit/mod_limitipconn-0.04.tar.gz" target="_blank">http://dominia.org/djao/limit/mod_limitipconn-0.04.tar.gz</a><br />
<br />
安装:<br />
tar zxvf mod_limitipconn-0.04.tar.gz<br />
cd mod_limitipconn-0.04<br />
make APXS=/usr/local/apache/bin/apxs&nbsp;&nbsp;&#223;-----这里要按你自己的路径设置<br />
make install APXS=/usr/local/apache/bin/apxs &#223;-----这里要按你自己的路径设置<br />
<br />
编辑httpd.conf<br />
添加<br />
全局<span href="http://jeck2046.blog.51cto.com/tag.php?name=%B1%E4%C1%BF">变量</span>:<br />
&lt; IfModule mod_limitipconn.c &gt;<br />
&nbsp;&nbsp;　　&nbsp;&nbsp;&lt; Location / &gt;&nbsp; &nbsp;# 所有虚拟主机的/目录<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;　　MaxConnPerIP 3&nbsp; &nbsp;&nbsp;&nbsp;# 每IP只允许3个并发连接<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;NoIPLimit image/*&nbsp;&nbsp;# 对图片不做IP限制<br />
&nbsp; &nbsp; &lt; /Location &gt;<br />
<br />
&lt; Location /mp3 &gt;&nbsp;&nbsp;# 所有主机的/mp3目录<br />
MaxConnPerIP 1&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# 每IP只允许一个连接请求&nbsp; &nbsp; <br />
OnlyIPLimit audio/mpeg video&nbsp; &nbsp; # 该限制只对视频和音频格式的<span href="http://jeck2046.blog.51cto.com/tag.php?name=%CE%C4%BC%FE">文件</span><br />
&nbsp; &nbsp; &lt; /Location &gt;<br />
&lt; /IfModule &gt;<br />
<br />
<br />
<br />
或者虚拟主机的:<br />
&lt; VirtualHost xx.xxx.xx.xx &gt; ##ip 地址<br />
ServerAdmin <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#97;&#115;&#121;&#64;&#112;&#104;&#112;&#118;&#46;&#110;&#101;&#116;">easy@<span href="http://jeck2046.blog.51cto.com/tag.php?name=php">php</span>v.net</a><br />
DocumentRoot /home/easy<br />
ServerName <a href="http://www.phpv.net/" target="_blank">www.phpv.net</a><br />
&lt; IfModule mod_limitipconn.c &gt;<br />
&nbsp; &nbsp; &lt; Location / &gt;&nbsp; &nbsp; <br />
MaxConnPerIP 5&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;　　NoIPLimit image/*&nbsp; &nbsp;&nbsp; &nbsp;<br />
&nbsp; &nbsp; &lt; /Location &gt;<br />
&nbsp; &nbsp; 　　&lt; Location /mp3 &gt;&nbsp; &nbsp; # 所有主机的/mp3目录<br />
MaxConnPerIP 2&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# 每IP只允许一个连接请求&nbsp; &nbsp; <br />
OnlyIPLimit audio/mpeg video # 该限制只对视频和音频格式的文件<br />
&nbsp; &nbsp; 　　&lt; /Location &gt;<br />
&lt; /IfModule &gt;<br />
&lt; /VirtualHost &gt;<br />
<br />
<br />
<br />
----------------------------------------------------------------------------------------------<br />
<br />
限制<span href="http://jeck2046.blog.51cto.com/tag.php?name=%B4%F8%BF%ED">带宽</span>：<br />
<br />
下载模块 <a href="ftp://ftp.cohprog.com/pub/apache/module/1.3.0/mod_bandwidth.c" target="_blank">ftp://ftp.cohprog.com/pub/apache/module/1.3.0/mod_bandwidth.c</a><br />
安装:<br />
/usr/local/apache/bin/apxs -c ./mod_bandwidth.c -o /usr/local/apache/libexec/mod_bandwidth.so&nbsp;&nbsp;<br />
<br />
<br />
<br />
&lt;-------以上/usr/local/apache请设置为你的路径<br />
<br />
编辑httpd.conf<br />
添加：<br />
LoadModule bandwidth_module libexec/mod_bandwidth.so<br />
AddModule mod_bandwidth.c<br />
<br />
重启你的apache<br />
<br />
相关<span href="http://jeck2046.blog.51cto.com/tag.php?name=%CE%C4%B5%B5">文档</span>：<br />
<br />
Global configuration directives :<br />
<br />
&nbsp; &nbsp; * BandWidthDataDir<br />
&nbsp; &nbsp;&nbsp; &nbsp;Syntax : BandWidthDataDir &lt;directory&gt;<br />
&nbsp; &nbsp;&nbsp; &nbsp;Default : "/tmp/apachebw"<br />
&nbsp; &nbsp;&nbsp; &nbsp;Context : server config <br />
<br />
Sets the name of the root directory u<span href="http://jeck2046.blog.51cto.com/tag.php?name=sed">sed</span>
by mod_bandwidth to store its internal temporary information. Don't
forget to create the needed directories : &lt;directory&gt;/master and
&lt;directory&gt;/link<br />
<br />
&nbsp; &nbsp; * BandWidthModule<br />
&nbsp; &nbsp;&nbsp; &nbsp;Syntax : BandWidthModule &lt;On|Off&gt;<br />
&nbsp; &nbsp;&nbsp; &nbsp;Default : Off<br />
&nbsp; &nbsp;&nbsp; &nbsp;Context : per server config <br />
<br />
Enable or disable totaly the whole module. By default, the module is disable so it is safe to compile it in the server anyway.<br />
<br />
PLEASE,
NOTE THAT IF YOU SET A BANDWIDTH LIMIT INSIDE A VIRTUALHOST BLOCK, YOU
ALSO __NEED__ TO PUT THE "BandWidthModule On" DIRECTIVE INSIDE THAT
VIRTUALHOST BLOCK !<br />
<br />
IF YOU SET BANDWIDTH LIMITS INSIDE DIRECTORY
BLOCKS (OUTSIDE OF ANY VIRTUALHOST BLOCK), YOU ONLY NEED TO PUT THE
"BandWidthModule On" DIRECTIVE ONCE, OUTSIDE OF ANY VIRTUALHOST OR
DIRECTORY BLOCK.<br />
<br />
&nbsp; &nbsp; * BandWidthPulse<br />
&nbsp; &nbsp;&nbsp; &nbsp;Syntax : BandWidthPulse &lt;microseconds&gt;<br />
&nbsp; &nbsp;&nbsp; &nbsp;Default :<br />
&nbsp; &nbsp;&nbsp; &nbsp;Context : per server config <br />
<br />
Change
the algorithm used to calculate bandwidth and transmit data. In normal
mode (old mode), the module try to transmit data in packets of 1KB.
That mean that if the bandwidth available is of 512B, the module will
transmit 1KB, wait 2 seconds, transmit another 1KB and so one.<br />
<br />
Seting a value <span href="http://jeck2046.blog.51cto.com/tag.php?name=with">with</span>
"BandWidthPulse", will change the algorithm so that the server will
always wait the same amount of time between sending packets but the
size of the packets will change. The value is in microseconds. For
example, if you set "BandWidthPulse 1000000" (1 sec) and the bandwidth
available is of 512B, the sever will transmit 512B, wait 1 second,
transmit 512B and so on.<br />
<br />
The advantage is a smother flow of
data. The disadvantage is a bigger overhead of data transmited for
packet header. Setting too small a value (bellow 1/5 of a sec) is not
realy useful and will put more <span href="http://jeck2046.blog.51cto.com/tag.php?name=load">load</span> on the system and generate more traffic for packet header.<br />
<br />
Note also that the operating system may do some buffering on it's own and so defeat the purpose of setting small values.<br />
<br />
This
may be very useful on especialy crowded network connection : In normal
mode, several seconds may happen between the sending of a full packet.
This may lead to timeout or people may believe that the connection is
hanging. Seting a value of 1000000 (1 sec) would guarantee that some
data are sent every seconds...</div>
<img src ="http://www.blogjava.net/bukebushuo/aggbug/229104.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bukebushuo/" target="_blank">蓝剑</a> 2008-09-16 10:56 <a href="http://www.blogjava.net/bukebushuo/articles/229104.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>APACHE配置文件中文详解</title><link>http://www.blogjava.net/bukebushuo/articles/229103.html</link><dc:creator>蓝剑</dc:creator><author>蓝剑</author><pubDate>Tue, 16 Sep 2008 02:53:00 GMT</pubDate><guid>http://www.blogjava.net/bukebushuo/articles/229103.html</guid><wfw:comment>http://www.blogjava.net/bukebushuo/comments/229103.html</wfw:comment><comments>http://www.blogjava.net/bukebushuo/articles/229103.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bukebushuo/comments/commentRss/229103.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bukebushuo/services/trackbacks/229103.html</trackback:ping><description><![CDATA[<div>#<br />
# 基于 NCSA 服务器的配置文件 由 Rob McCool 编写，龙子翻译<br />
#<br />
# Apache服务器主配置文件.&nbsp; 包括服务器指令的目录设置.<br />
# 详见 &lt;<a href="http://www.apache.org/docs/">URL:</a><a href="http://www.apache.org/docs/" target="_blank">http://www.apache.org/docs/</a>&gt; <br />
#<br />
# 请在理解用途的基础上阅读各指令。<br />
#<br />
# 再读取此文档后，服务器将继续搜索运行<br />
# E:/Program Files/Apache Group/Apache/conf/srm.conf <br />
# E:/Program Files/Apache Group/Apache/conf/access.conf<br />
# 除非用ResourceConfig或AccessConfig覆盖这儿的标识<br />
#<br />
# 配置标识由三个基本部分组成:<br />
#&nbsp; 1. 作为一个整体来控制Apache服务器进程的标识 (the 'global environment').<br />
#&nbsp; 2. 用于定义主（默认）服务器参数的标识。<br />
#&nbsp;&nbsp;&nbsp;&nbsp; 响应虚拟主机不能处理的请求。<br />
#&nbsp;&nbsp;&nbsp;&nbsp; 同时也提供所有虚拟主机的设置值。<br />
#&nbsp; 3. 虚拟主机的设置。在一个Apache服务器进程中配置不同的IP地址和主机名。<br />
#<br />
# 配置和日志文件名：指定服务器控制文件命名时，<br />
# 以 "/" (或 "drive:/" for Win32)开始，服务器将使用这些绝对路径。<br />
# 如果文件名不是以"/"开始的，预先考虑服务器根目录--<br />
#&nbsp; 因此 "logs/foo.log"，如果服务器根目录是"/usr/local/apache"，<br />
#&nbsp; 服务器将解释为 "/usr/local/apache/logs/foo.log".<br />
#<br />
# 注: 指定的文件名需要用"/"代替"""。<br />
# (例, "c:/apache" 代替 "c:"apache").<br />
# 如果省略了驱动器名，默认使用Apache.exe所在的驱动器盘符<br />
# 建议指定盘符，以免混乱。<br />
#</div>
<div>### 部分 1: 全局环境<br />
#<br />
# 本部分的表示将影响所有Apache的操作<br />
# 例如，所能处理的并发请求数或配置文件地址<br />
#</div>
<div>#<br />
# ServerType 可取值 inetd 或 standalone.&nbsp; Inetd 只适用于Unix平台<br />
#<br />
ServerType standalone</div>
<div>#<br />
# ServerRoot: 目录树的根结点。服务器配置、出错信息、日志文件都保存在根目录下。<br />
#<br />
# 不要再目录末尾加"/"<br />
#<br />
ServerRoot "C:/Program Files/Apache Group/Apache"</div>
<div>#<br />
# PidFile: 服务器用于记录启动时进程ID的文件。<br />
#<br />
PidFile logs/httpd.pid</div>
<div>#<br />
# ScoreBoardFile: 用于保存内部服务器进程信息的文件。<br />
# 并非必须。 但是如果指定了（此文件当运行Apache时生成）<br />
# 那么必须确保没有两个Apache进程共享同一个scoreboard文件。<br />
#<br />
ScoreBoardFile logs/apache_runtime_status</div>
<div>#<br />
# 在标准配置下，服务器将顺序读取 httpd.conf(此文件可通过命令行中-f参数指定），<br />
# srm.conf 和 access.conf。 <br />
# 目前后两个文件是空的。为了简单起见，建议将所有的标识放在一个文件中。&nbsp; <br />
# 以下两条注释的标识，是默认设置。<br />
# 要让服务器忽略这些文件可以用 "/dev/null" (for Unix) <br />
# 或"nul" (for Win32) 作为参数。<br />
#<br />
#ResourceConfig conf/srm.conf<br />
#AccessConfig conf/access.conf</div>
<div>#<br />
# Timeout: 接受和发送timeout的时间<br />
#<br />
Timeout 300</div>
<div>#<br />
# KeepAlive: 是否允许保持连接（每个连接有多个请求）<br />
# "Off" -无效<br />
#<br />
KeepAlive On</div>
<div>#<br />
# MaxKeepAliveRequests: 每个连接的最大请求数。<br />
# 设置为0表示无限制<br />
# 建议设置较高的值，以获得最好的性能。<br />
#<br />
MaxKeepAliveRequests 100</div>
<div>#<br />
# KeepAliveTimeout: 同一连接同一客户端两个请求之间的等待时间。<br />
#<br />
KeepAliveTimeout 15</div>
<div>#<br />
# 在Win32下,Apache每次产生一个子进程来处理请求。<br />
# 如果这个进程死了，会自动产生另一个子进程。<br />
# 所有的进入请求在子进程中多线程处理。<br />
# 以下两个标识控制进程的运行<br />
#</div>
<div>#<br />
# MaxRequestsPerChild: 每个子进程死亡之前最大请求数<br />
# 如果超过这个请求数，子程序会自动退出，避免延期使用导致内存溢出或其他问题。<br />
# 大部分系统，并不需要此设置，<br />
# 但是部分，象Solaris，确实值得注意。<br />
# 对Win32, 可设置为0 (无限制)<br />
# 除非有另外的考虑。<br />
#<br />
# 注: 此值不包括在每个连接初始化请求后，"keptalive"请求<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如, 如果一个子进程处理一个初始化请求和10个后续"keptalive"请求，<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在这个限制下，只会记为一个请求。<br />
#<br />
MaxRequestsPerChild 0</div>
<div>#<br />
# ThreadsPerChild: 服务器所允许的并发线程数。<br />
# 此值的设置取决于服务器的响应能力（约多的请求在同一时间激活，则每个请求的处理时间越慢）<br />
# 和服务器所允许消耗的系统资源。<br />
#<br />
ThreadsPerChild 50</div>
<div>#<br />
# Listen: 允许将Apache绑顶到指定的IP地址和端口，作为默认值的辅助选项。<br />
# 参见 &lt;VirtualHost&gt;<br />
#<br />
#Listen 3000<br />
#Listen 12.34.56.78:80</div>
<div>#<br />
# BindAddress: 通过此选项可支持虚拟主机。<br />
# 此标识用于告诉服务器监听哪个IP地址。<br />
# 包括："*", IP地址, 或域名.<br />
# 参见 &lt;VirtualHost&gt; 和 Listen directives.<br />
#<br />
BindAddress 166.111.178.144</div>
<div>#<br />
# Apache模块编译成标准的Windows结构。<br />
#<br />
# 以下模块绑定到标准的Apache二进制windows分布。<br />
# 要修改标准操作，取消以下行的注释并且修改指定模块列表。 <br />
#<br />
# 警告：这是高级选项。可能导致服务器崩溃。<br />
# 没有专家的指导，不要轻易修改。<br />
#<br />
#ClearModuleList<br />
#AddModule mod_so.c mod_mime.c mod_access.c mod_auth.c mod_negotiation.c<br />
#AddModule mod_include.c mod_autoindex.c mod_dir.c mod_cgi.c mod_userdir.c<br />
#AddModule mod_alias.c mod_env.c mod_log_config.c mod_asis.c mod_imap.c<br />
#AddModule mod_actions.c mod_setenvif.c mod_isapi.c</div>
<div>#<br />
# 动态共享对象（Dynamic Shared Object，DSO） <br />
#<br />
# 要使用基于DSO的功能模块，需要替换此处相应的<br />
#&nbsp; `LoadModule' 行。这样在使用之前这些包含的标识都将生效。<br />
# 有关DSO及至的详细资料请看Apache1.3版中的README.DSOSO。<br />
# 运行"apche -l"将列表显示Apache内奸的模块（类似标准的连接已经生效）<br />
#<br />
# 注：模块载入的顺序很重要。没有专家的建议，不要修改以下的顺序。<br />
#<br />
#LoadModule anon_auth_module modules/ApacheModuleAuthAnon.dll<br />
#LoadModule dbm_auth_module modules/ApacheModuleAuthDBM.dll<br />
#LoadModule digest_auth_module modules/ApacheModuleAuthDigest.dll<br />
#LoadModule cern_meta_module modules/ApacheModuleCERNMeta.dll<br />
#LoadModule digest_module modules/ApacheModuleDigest.dll<br />
#LoadModule expires_module modules/ApacheModuleExpires.dll<br />
#LoadModule headers_module modules/ApacheModuleHeaders.dll<br />
#LoadModule proxy_module modules/ApacheModuleProxy.dll<br />
#LoadModule rewrite_module modules/ApacheModuleRewrite.dll<br />
#LoadModule speling_module modules/ApacheModuleSpeling.dll<br />
#LoadModule info_module modules/ApacheModuleInfo.dll<br />
#LoadModule status_module modules/ApacheModuleStatus.dll<br />
#LoadModule usertrack_module modules/ApacheModuleUserTrack.dll</div>
<div>#<br />
# ExtendedStatus 在服务器状态句柄被呼叫时控制是产生"完整"的状态信息(ExtendedStatus On)<br />
# 还是仅返回基本信息(ExtendedStatus Off)<br />
# 默认是：Off<br />
#<br />
#ExtendedStatus On</div>
<div>### 部分 2: 主服务器配置<br />
#<br />
# 此部分的标识用于主服务器所有的设置值，<br />
# 响应任何&lt;VirtualHost&gt;定义不处理的请求<br />
# 这些值同时给你稍后在此文件中定义的&lt;VirtualHost&gt;提供默认值。<br />
#<br />
# 所有的标识可能会在&lt;VirtualHost&gt;中出现。<br />
# 对应的默认值会被虚拟主机重新定义覆盖。<br />
#</div>
<div>#<br />
# Port: Standalone服务器监听的端口。&nbsp; <br />
# 在Apache能够监听指定端口前，需要在防火墙中进行设置。<br />
# 其它运行httpd的服务器也可能影响此端口。&nbsp; Disable<br />
# 如果遇到问题，请关闭所有的防火墙、安全保护和其他的服务。<br />
# Windos NT的"NETSTAT -a"指令会有助于问题的分析。<br />
#<br />
Port 80</div>
<div>#<br />
# ServerAdmin: 你的地址。如果服务器有任何问题将发信到这个地址。<br />
# 这个地址会在服务器产生的某些页面中出现，例如，错误报告。<br />
#<br />
ServerAdmin <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#99;&#104;&#101;&#110;&#121;&#108;&#57;&#56;&#64;&#109;&#97;&#105;&#108;&#115;&#46;&#116;&#115;&#105;&#110;&#103;&#104;&#117;&#97;&#46;&#101;&#100;&#117;&#46;&#99;&#110;">chenyl98@mails.tsinghua.edu.cn</a></div>
<div>#<br />
# ServerName 允许设置主机名。如果与程序获得的不同，主机名将返回客户端。<br />
# （例如，用"www"代替主机真实的名字）<br />
#<br />
# 注: 主机名不能随便指定。必须是你的机器有效的DNS名称。否则无法正常工作。<br />
# 如果不能理解，倾向你的网络管理员询问。<br />
# 如果你的主机没有注册DNS名，可在此输入IP地址。<br />
# 此时必须用IP地址来访问。(如, <a href="http://123.45.67.89/" target="_blank">http://123.45.67.89/</a>)<br />
# 这样扔可以完成重新定向的工作。<br />
#<br />
# 127.0.0.1 是TCP/IP的本地环路地址, 通常命名为localhost. <br />
# 机器默认此地置为本身。 如果只是使用Apache来进行本地测试和开发， <br />
# 可使用127.0.0.1 作为服务器名.<br />
#<br />
#ServerName new.host.name</div>
<div><br />
#<br />
# DocumentRoot: 放置服务文档的目录。<br />
# 默认状态下，所有的请求都以这个目录为基础。<br />
# 但是直接符号连接和别名可用于指向其他位置。<br />
#<br />
DocumentRoot "D:/www_root"</div>
<div>#<br />
# Apache访问的每个目录可设置相关的服务和特性是允许或（和）不允许。<br />
# (同样影响其子目录） <br />
#<br />
# 首先，设置"default"地址只有最基本的权限。<br />
#<br />
&lt;Directory /&gt;<br />
&nbsp;&nbsp;&nbsp; Options FollowSymLinks<br />
&nbsp;&nbsp;&nbsp; AllowOverride None<br />
&lt;/Directory&gt;</div>
<div>#<br />
# 注意从现在开始必须制定开启特殊的权限。<br />
# 这样就不会产生意想不到的结果。<br />
# 请仔细确认。<br />
#</div>
<div>#<br />
# 这个地址应与DocumentRoot保持一致<br />
#<br />
&lt;Directory "D:/www_root"&gt;</div>
<div>#<br />
# 此值可是： "None", "All", 或下列的组合： "Indexes",<br />
# "Includes", "FollowSymLinks", "ExecCGI", 或 "MultiViews".<br />
#<br />
# 注意"MultiViews"必须明确指定--- "Options All"不包括此特性。<br />
#<br />
&nbsp;&nbsp;&nbsp; Options Indexes FollowSymLinks MultiViews</div>
<div>#<br />
# 此项控制目录中哪些.htaccess文件可覆盖。<br />
# 允许值： "All"或者以下项的组合："Options", "FileInfo", <br />
# "AuthConfig", "Limit"<br />
#<br />
&nbsp;&nbsp;&nbsp; AllowOverride None</div>
<div>#<br />
# 控制哪些用户可从此服务器获得资料。<br />
#<br />
&nbsp;&nbsp;&nbsp; Order allow,deny<br />
&nbsp;&nbsp;&nbsp; Allow from all<br />
&lt;/Directory&gt;</div>
<div>#<br />
# UserDir: 当请求~user时，追加到用户主目录的路径地址。<br />
#<br />
# 在Win32下，并不要求指定为用户登陆的主目录。<br />
# 因此可使用以下的格式。 <br />
# 详细参照文档UserDir<br />
#<br />
&lt;IfModule mod_userdir.c&gt;<br />
&nbsp;&nbsp;&nbsp; UserDir "f:/homepages/"<br />
&lt;/IfModule&gt;</div>
<div>#<br />
# 控制访问UserDir目录.&nbsp; The following is an example<br />
# 以下是一个站点的例子，权限限制为只读。<br />
#<br />
#&lt;Directory "E:/Program Files/Apache Group/Apache/users"&gt;<br />
#&nbsp;&nbsp;&nbsp; AllowOverride FileInfo AuthConfig Limit<br />
#&nbsp;&nbsp;&nbsp; Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec<br />
#&nbsp;&nbsp;&nbsp; &lt;Limit GET POST OPTIONS PROPFIND&gt;<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Order allow,deny<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Allow from all<br />
#&nbsp;&nbsp;&nbsp; &lt;/Limit&gt;<br />
#&nbsp;&nbsp;&nbsp; &lt;LimitExcept GET POST OPTIONS PROPFIND&gt;<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Order deny,allow<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Deny from all<br />
#&nbsp;&nbsp;&nbsp; &lt;/LimitExcept&gt;<br />
#&lt;/Directory&gt;</div>
<div>#<br />
# DirectoryIndex: 预设的HTML目录索引文件名。<br />
# 用空格来分隔多个文件名。<br />
#<br />
&lt;IfModule mod_dir.c&gt;<br />
&nbsp;&nbsp;&nbsp; DirectoryIndex index.html<br />
&lt;/IfModule&gt;</div>
<div>#<br />
# AccessFileName: 每个目录中用于控制访问信息的文件名。<br />
#<br />
AccessFileName .htaccess</div>
<div>#<br />
# 以下行防止客户端可访问 .htaccess 文件。<br />
# 因为 .htaccess文件通常包含授权信息，<br />
# 处于安全的考虑不允许访问。 <br />
# 如果想让访客看到.htaccess文件的内容，<br />
# 可将这些行注释。<br />
# 如果修改了上面的AccessFileName,<br />
# 请在此进行相应的修改。<br />
#<br />
# 同时，一般会用类似.htpasswd的文件保存密码。<br />
# 这些文件同样可以得到保护。<br />
#<br />
&lt;Files ~ "^".ht"&gt;<br />
&nbsp;&nbsp;&nbsp; Order allow,deny<br />
&nbsp;&nbsp;&nbsp; Deny from all<br />
&lt;/Files&gt;</div>
<div>#<br />
# CacheNegotiatedDocs: 默认下，Apache对每个文档发送"Pragma: no-cache"<br />
# 这将要求代理服务器不缓存此文档。<br />
# 取消下列行的可取消这个属性，这样代理服务器将缓存这些文档。<br />
#<br />
#CacheNegotiatedDocs</div>
<div>#<br />
# UseCanonicalName:&nbsp; (1.3新增)&nbsp; 当此设置为on时，<br />
# 无论何时Apache需要构建一个自引用的URL(指向响应来源服务器），<br />
# 它将用ServerName和Port来构建一个规范的格式。<br />
# 当此设置为off时，Apache将使用客户端提供的"主机名：端口"<br />
# 这将同时影响CGI脚本中的SERVER_NAME和SERVER_PORT<br />
#<br />
UseCanonicalName On</div>
<div>#<br />
# TypesConfig 记录媒体类型（mime.types）文件或类似的东东放置的位置<br />
#<br />
&lt;IfModule mod_mime.c&gt;<br />
&nbsp;&nbsp;&nbsp; TypesConfig conf/mime.types<br />
&lt;/IfModule&gt;</div>
<div>#<br />
# DefaultType 是服务器处理未确认类型的文件，如为止的扩展名，的默认类型。<br />
# 如果你的服务器上主要包含的是文本或HTML文档，"text/plain"是较好的设置 <br />
# 如果服务器上主要包含二进制文件，如应用程序或图片，<br />
# 最好设置成"application/octet-stream"防止浏览器将二进制文件以文本的方式显示。<br />
#<br />
DefaultType text/plain</div>
<div>#<br />
# mod_mime_magic模块允许服务器使用文件自身的不同标识来确定文件类型。<br />
# MIMEMagicFile指示模块文件标识的定义所在的位置。<br />
# mod_mime_magic不是默认服务器的一部分。<br />
# (必须自行用LoadModule来追加 [见'全局环境'部分的 DSO 章节],<br />
# 或者在编译服务器时包含mod_mime_magic部分）<br />
# 包含在 &lt;IfModule&gt; 中.<br />
# 就是说，如果该模块是服务器的一部分，MIMEMagicFile标识将执行。<br />
#<br />
&lt;IfModule mod_mime_magic.c&gt;<br />
&nbsp;&nbsp;&nbsp; MIMEMagicFile conf/magic<br />
&lt;/IfModule&gt;</div>
<div>#<br />
# HostnameLookups: 注册客户端的机器名或IP地址。<br />
# 例如： <a href="http://www.apache.org/" target="_blank">www.apache.org</a> (on) 或 204.62.129.132 (off).<br />
# 默认为off，因为对于网络来说，最好让人们有意识的设置为on，<br />
# 因为开启此功能意味着每个客户请求将导致至少向name服务器发送一个lookup请求<br />
#<br />
HostnameLookups Off</div>
<div>#<br />
# ErrorLog: 错误记录文件的地址<br />
# 如果不在&lt;VirtualHost&gt;内指定ErrorLog <br />
# 改虚拟主机的错误心细将记录到此处。<br />
# 如果在&lt;VirtualHost&gt;中明确指定了错误记录文件，<br />
# 则错误将记录在那儿而不是这儿。<br />
#<br />
ErrorLog logs/error.log</div>
<div>#<br />
# LogLevel: 控制记录在error.log中信息的个数.<br />
# 可能的值：debug, info, notice, warn, error, crit,<br />
# alert, emerg.<br />
#<br />
LogLevel warn</div>
<div>#<br />
# 以下标识定义CustomLog标识使用的格式。（见下）<br />
#<br />
LogFormat "%h %l %u %t ""%r"" %&gt;s %b ""%{Referer}i"" ""%{User-Agent}i""" combined<br />
LogFormat "%h %l %u %t ""%r"" %&gt;s %b" common<br />
LogFormat "%{Referer}i -&gt; %U" referer<br />
LogFormat "%{User-agent}i" agent</div>
<div>#<br />
# 访问记录的位置和格式 (功用的记录文件格式).<br />
# 如果不在&lt;VirtualHost&gt;中定义记录文件，<br />
# 那些访问记录就将保存在这儿。&nbsp; Contrariwise, if you *do*<br />
# 反之，如果指定了记录文件，那么访问记录将记录在那儿而不是这个文件中。<br />
#<br />
CustomLog logs/access.log common</div>
<div>#<br />
# 如果希望使用代理和参考的记录文件, 取消以下标识的注释符<br />
#<br />
#CustomLog logs/referer.log referer<br />
#CustomLog logs/agent.log agent</div>
<div>#<br />
# 如果想在一个文件中记录访问、代理、参考信息（复合的记录格式）<br />
# 可使用以下标识<br />
#<br />
#CustomLog logs/access.log combined</div>
<div>#<br />
# 在服务器产生的页面（如错误文档信息，FTP目录列表等等，不包括CGI产生的文档）中<br />
# 增加一条服务器版本和虚拟主机名的信息。<br />
# 设置为"EMail"将包含mailto: ServerAdmin的连接.<br />
# 可选值:&nbsp; On | Off | EMail<br />
#<br />
ServerSignature On</div>
<div># <br />
# 默认下，Apache用工作行解析所有CGI脚本<br />
# 此注释行（脚本的第一行）包括'#'和'!'后面跟着执行特殊脚本的程序路径，<br />
# 对perl脚本来说是C:"Program Files"Perl目录中的perl.exe。<br />
# 工作行如下：</div>
<div>&nbsp;&nbsp; #!c:/program files/perl/perl</div>
<div># 注意真实的工作行不能有缩进，必须是文件的第一行。<br />
# 当然，CGI进程必须通过适当的ScriptAlias或ExecCGI选项标识来启动。<br />
#<br />
# 然而，Windows下的Apache即允许以上的Unix方式，也可以通过注册表的形式。<br />
# 用注册表执行文件的方法同在Windows资源管理器中双击运行的注册方法相同。 <br />
# 此脚本操作可在Windows资源管理器的"查看"菜单中设置。 <br />
# "文件夹选项"，然后查看"文件类型"。点击编辑按钮。<br />
# 修改操作属性。Apache 1.3会尝试执行&#8216;Open'操作，<br />
# 如果失败则会尝试工作行<br />
# 这个属性在Apache release 2.0中会有改变.<br />
#<br />
# 每个机制都有自身特定的安全弱点，这样可能导致别人运行你不希望调用的程序。<br />
# 最佳的解决方案还在讨论中。<br />
#<br />
# 要是这个Windows的特殊属性生效 (同时会是Unix属性无效）<br />
# 取消下列标识的注释符。<br />
#<br />
#ScriptInterpreterSource registry<br />
#<br />
# 上面的标识可在&lt;Directory&gt;块或.htaccess文件中单独替换。<br />
# 可选择'registry' (Windows behavior)或 'script' <br />
# (Unix behavior) option, 将覆盖服务器的默认值。<br />
#</div>
<div>#<br />
# Aliases: 可无限制的追加别名。格式如下： <br />
# Alias 假名 真名<br />
#<br />
&lt;IfModule mod_alias.c&gt;</div>
<div>&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # 注意如果假名中包含'/'，服务器会在当前URL中发出请求。<br />
&nbsp;&nbsp;&nbsp; # 因此"/icons"不能用于别名<br />
&nbsp;&nbsp;&nbsp; # 必须用 "/icons/"..<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; Alias /icons/ "C:/Program Files/Apache Group/Apache/icons/"</div>
<div>&nbsp;&nbsp;&nbsp; &lt;Directory "C:/Program Files/Apache Group/Apache/icons"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Options Indexes MultiViews<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AllowOverride None<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Order allow,deny<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Allow from all<br />
&nbsp;&nbsp;&nbsp; &lt;/Directory&gt;</div>
<div>&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # ScriptAlias: 控制哪个目录包含服务器脚本。<br />
&nbsp;&nbsp;&nbsp; # ScriptAlias本质行和Aliases一样。, except that<br />
&nbsp;&nbsp;&nbsp; # 区别在于真名目录中的文档被看作是一个应用程序。<br />
&nbsp;&nbsp;&nbsp; # 请求时由服务器运行而不是发往客户端。<br />
&nbsp;&nbsp;&nbsp; # "/"符号的规则同<br />
&nbsp;&nbsp;&nbsp; # Alias相同.<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; ScriptAlias /cgi-bin/ "C:/Program Files/Apache Group/Apache/cgi-bin/"</div>
<div>&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # "C:/Program Files/Apache Group/Apache/cgi-bin" 可修改为任何放置CGI脚本的目录<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; &lt;Directory "C:/Program Files/Apache Group/Apache/cgi-bin"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AllowOverride None<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Options None<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Order allow,deny<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Allow from all<br />
&nbsp;&nbsp;&nbsp; &lt;/Directory&gt;</div>
<div>&lt;/IfModule&gt;<br />
# 别名结束</div>
<div>#php脚本说明</div>
<div>ScriptAlias /php/ "d:/php/"<br />
AddType application/x-httpd-php .php<br />
AddType application/x-httpd-php .php3<br />
AddType application/x-httpd-php .phtml<br />
Action application/x-httpd-php "/php/php.exe"</div>
<div>#php脚本说明结束</div>
<div>#<br />
# Redirect 允许告诉客户端服务器上曾经有的文档，但是现在不存在了。<br />
# 并且可以告诉客户端到哪儿去寻找。<br />
# 格式: Redirect old-URL new-URL<br />
#</div>
<div>#<br />
# 控制服务器目录列表显示的标识<br />
#<br />
&lt;IfModule mod_autoindex.c&gt;</div>
<div>&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # FancyIndexing标识是使用特定的目录检索还是标准的（standard）<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; IndexOptions FancyIndexing</div>
<div>&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # AddIcon*表明不同文件或扩展名显示的图标。<br />
&nbsp;&nbsp;&nbsp; # 这些图标只在特定检索状态下显示。<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip</div>
<div>&nbsp;&nbsp;&nbsp; AddIconByType (TXT,/icons/text.gif) text/*<br />
&nbsp;&nbsp;&nbsp; AddIconByType (IMG,/icons/image2.gif) image/*<br />
&nbsp;&nbsp;&nbsp; AddIconByType (SND,/icons/sound2.gif) audio/*<br />
&nbsp;&nbsp;&nbsp; AddIconByType (VID,/icons/movie.gif) video/*</div>
<div>&nbsp;&nbsp;&nbsp; AddIcon /icons/binary.gif .bin .exe<br />
&nbsp;&nbsp;&nbsp; AddIcon /icons/binhex.gif .hqx<br />
&nbsp;&nbsp;&nbsp; AddIcon /icons/tar.gif .tar<br />
&nbsp;&nbsp;&nbsp; AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv<br />
&nbsp;&nbsp;&nbsp; AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip<br />
&nbsp;&nbsp;&nbsp; AddIcon /icons/a.gif .ps .ai .eps<br />
&nbsp;&nbsp;&nbsp; AddIcon /icons/layout.gif .html .shtml .htm .pdf<br />
&nbsp;&nbsp;&nbsp; AddIcon /icons/text.gif .txt<br />
&nbsp;&nbsp;&nbsp; AddIcon /icons/c.gif .c<br />
&nbsp;&nbsp;&nbsp; AddIcon /icons/p.gif .pl .py<br />
&nbsp;&nbsp;&nbsp; AddIcon /icons/f.gif .for<br />
&nbsp;&nbsp;&nbsp; AddIcon /icons/dvi.gif .dvi<br />
&nbsp;&nbsp;&nbsp; AddIcon /icons/uuencoded.gif .uu<br />
&nbsp;&nbsp;&nbsp; AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl<br />
&nbsp;&nbsp;&nbsp; AddIcon /icons/tex.gif .tex<br />
&nbsp;&nbsp;&nbsp; AddIcon /icons/bomb.gif core</div>
<div>&nbsp;&nbsp;&nbsp; AddIcon /icons/back.gif ..<br />
&nbsp;&nbsp;&nbsp; AddIcon /icons/hand.right.gif README<br />
&nbsp;&nbsp;&nbsp; AddIcon /icons/folder.gif ^^DIRECTORY^^<br />
&nbsp;&nbsp;&nbsp; AddIcon /icons/blank.gif ^^BLANKICON^^</div>
<div>&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # DefaultIcon 用于为制定图标的文件所显示的图标。<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; DefaultIcon /icons/unknown.gif</div>
<div>&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # AddDescription在服务器生成的检索的某个文件后追加小段说明。<br />
&nbsp;&nbsp;&nbsp; # 此项只在设置为FancyIndexed时有效<br />
&nbsp;&nbsp;&nbsp; # 格式：AddDescription "描述" 文件名<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; #AddDescription "GZIP compressed document" .gz<br />
&nbsp;&nbsp;&nbsp; #AddDescription "tar archive" .tar<br />
&nbsp;&nbsp;&nbsp; #AddDescription "GZIP compressed tar archive" .tgz</div>
<div>&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # ReadmeName是服务器默认的README文件。<br />
&nbsp;&nbsp;&nbsp; # 并且会追加到目录列表的最后。<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # HeaderName 是目录中需要预先显示内容的文件名。<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # 如果MultiViews在选项中，作为结果，服务器将先找name.html，<br />
&nbsp;&nbsp;&nbsp; # 如果存在就包含它。如果name.html不存在，<br />
&nbsp;&nbsp;&nbsp; # 服务器会继续寻找name.txt。如果存在就作为纯文本包含进来。<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; ReadmeName README<br />
&nbsp;&nbsp;&nbsp; HeaderName HEADER</div>
<div>&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # IndexIgnore是一系列的文件名。目录索引将忽略这些文件并且不包含在列表中。<br />
&nbsp;&nbsp;&nbsp; # 允许使用通配符。<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t</div>
<div>&lt;/IfModule&gt;<br />
# indexing标识结束</div>
<div>#<br />
# 文件类型<br />
#<br />
&lt;IfModule mod_mime.c&gt;</div>
<div>&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # AddEncoding 可用于特殊浏览器(Mosaic/X 2.1+)快速传输压缩信息。<br />
&nbsp;&nbsp;&nbsp; # 注：并不是所有的服务器都支持。<br />
&nbsp;&nbsp;&nbsp; # 除了名字相似，以下Add*标识对上面的FancyIndexing定制标识无影响。<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; AddEncoding x-compress Z<br />
&nbsp;&nbsp;&nbsp; AddEncoding x-gzip gz tgz<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # AddLanguage用于指定文档的语言。<br />
&nbsp;&nbsp;&nbsp; # 可以使用content标签指定每个文件的语言。<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # 注 1: 后缀不必与所用语言的关键字相同。<br />
&nbsp;&nbsp;&nbsp; #&nbsp;&nbsp; --- 波兰语（Polish，标准代码为pl）的文档可以用<br />
&nbsp;&nbsp;&nbsp; #&nbsp; "AddLanguage pl .po" 来避免与perl脚本文件混淆。<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # 注 2: 以下例子表明两个字母的语言缩写和两个字母的国家缩写并不一定相同。<br />
&nbsp;&nbsp;&nbsp; # E.g. 'Danmark/dk' 对比 'Danish/da'.<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # 注 3: 其中'ltz'使用了三个字符，与RFC的规定不同。<br />
&nbsp;&nbsp;&nbsp; # 但是这个问题正在修订中，并且重新清理RFC1766<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # 丹麦Danish (da) - 荷兰Dutch (nl) - 英国English (en) - 爱萨尼亚Estonian (ee)<br />
&nbsp;&nbsp;&nbsp; # 法国French (fr) - 德国German (de) - 现代希腊文Greek-Modern (el)<br />
&nbsp;&nbsp;&nbsp; # 意大利Italian (it) - 朝鲜Korean (kr) - 挪威Norwegian (no)<br />
&nbsp;&nbsp;&nbsp; # 葡萄牙Portuguese (pt) - 卢森堡Luxembourgeois* (ltz)<br />
&nbsp;&nbsp;&nbsp; # 西班牙Spanish (es) - 瑞典Swedish (sv) - 加泰罗尼亚Catalan (ca) - 捷克Czech(cz)<br />
&nbsp;&nbsp;&nbsp; # 波兰Polish (pl) - 巴西Brazilian Portuguese (pt-br) - 日本Japanese (ja)<br />
&nbsp;&nbsp;&nbsp; # 俄国Russian (ru)<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; AddLanguage da .dk<br />
&nbsp;&nbsp;&nbsp; AddLanguage nl .nl<br />
&nbsp;&nbsp;&nbsp; AddLanguage en .en<br />
&nbsp;&nbsp;&nbsp; AddLanguage et .ee<br />
&nbsp;&nbsp;&nbsp; AddLanguage fr .fr<br />
&nbsp;&nbsp;&nbsp; AddLanguage de .de<br />
&nbsp;&nbsp;&nbsp; AddLanguage el .el<br />
&nbsp;&nbsp;&nbsp; AddLanguage he .he<br />
&nbsp;&nbsp;&nbsp; AddCharset ISO-8859-8 .iso8859-8<br />
&nbsp;&nbsp;&nbsp; AddLanguage it .it<br />
&nbsp;&nbsp;&nbsp; AddLanguage ja .ja<br />
&nbsp;&nbsp;&nbsp; AddCharset ISO-2022-JP .jis<br />
&nbsp;&nbsp;&nbsp; AddLanguage kr .kr<br />
&nbsp;&nbsp;&nbsp; AddCharset ISO-2022-KR .iso-kr<br />
&nbsp;&nbsp;&nbsp; AddLanguage no .no<br />
&nbsp;&nbsp;&nbsp; AddLanguage pl .po<br />
&nbsp;&nbsp;&nbsp; AddCharset ISO-8859-2 .iso-pl<br />
&nbsp;&nbsp;&nbsp; AddLanguage pt .pt<br />
&nbsp;&nbsp;&nbsp; AddLanguage pt-br .pt-br<br />
&nbsp;&nbsp;&nbsp; AddLanguage ltz .lu<br />
&nbsp;&nbsp;&nbsp; AddLanguage ca .ca<br />
&nbsp;&nbsp;&nbsp; AddLanguage es .es<br />
&nbsp;&nbsp;&nbsp; AddLanguage sv .se<br />
&nbsp;&nbsp;&nbsp; AddLanguage cz .cz<br />
&nbsp;&nbsp;&nbsp; AddLanguage ru .ru<br />
&nbsp;&nbsp;&nbsp; AddLanguage tw .tw<br />
&nbsp;&nbsp;&nbsp; AddCharset Big5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Big5&nbsp;&nbsp;&nbsp; .big5<br />
&nbsp;&nbsp;&nbsp; AddCharset WINDOWS-1251 .cp-1251<br />
&nbsp;&nbsp;&nbsp; AddCharset CP866&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .cp866<br />
&nbsp;&nbsp;&nbsp; AddCharset ISO-8859-5&nbsp;&nbsp; .iso-ru<br />
&nbsp;&nbsp;&nbsp; AddCharset KOI8-R&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .koi8-r<br />
&nbsp;&nbsp;&nbsp; AddCharset UCS-2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .ucs2<br />
&nbsp;&nbsp;&nbsp; AddCharset UCS-4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .ucs4<br />
&nbsp;&nbsp;&nbsp; AddCharset UTF-8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .utf8</div>
<div>&nbsp;&nbsp;&nbsp; # LanguagePriority 可设置语言的优先级。<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # 优先级降序排列<br />
&nbsp;&nbsp;&nbsp; # 在此处按照字母顺序，可自行修改<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; &lt;IfModule mod_negotiation.c&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw<br />
&nbsp;&nbsp;&nbsp; &lt;/IfModule&gt;</div>
<div>&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # AddType 可临时改变mime.types或者指定特殊文件的格式。<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # 例如：PHP 3.x 模块 (非Apache标准配件，参见<a href="http://www.php.net/" target="_blank">http://www.php.net</a>)可用下面格式定义：<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; #AddType application/x-httpd-php3 .php3<br />
&nbsp;&nbsp;&nbsp; #AddType application/x-httpd-php3-source .phps<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # PHP 4.x, 使用:<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; #AddType application/x-httpd-php .php<br />
&nbsp;&nbsp;&nbsp; #AddType application/x-httpd-php-source .phps</div>
<div>&nbsp;&nbsp;&nbsp; AddType application/x-tar .tgz</div>
<div>&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # AddHandler 可将特定文件扩展名映射到处理方法上。<br />
&nbsp;&nbsp;&nbsp; # 与文件类型无关。此特性可内建到服务器中或者追加在操作指令中（见下）<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # 如果希望用服务器端应用或ScriptAliased外的CGI，取消以下行的注释符<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # 用CGI脚本:<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; #AddHandler cgi-script .cgi</div>
<div>&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # 用服务器解析的HTML文档<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; #AddType text/html .shtml<br />
&nbsp;&nbsp;&nbsp; #AddHandler server-parsed .shtml</div>
<div>&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # 取消以下注释符可激活Apache的send-asis HTTP file特性<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; #AddHandler send-as-is asis</div>
<div>&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # 如果使用服务器端解析的图像定位文件，使用以下标识：<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; #AddHandler imap-file map</div>
<div>&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # 要激活type maps使用：<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; #AddHandler type-map var</div>
<div>&lt;/IfModule&gt;<br />
# 文档类型说明结束</div>
<div>#<br />
# Action 定义在文件匹配时执行相应的脚本。<br />
# 可简化常用CGI文件的调用。<br />
# 格式: Action media/type /cgi-script/location<br />
# 格式: Action handler-name /cgi-script/location<br />
#</div>
<div>#<br />
# MetaDir: 指定保存meta信息文件的目录。<br />
# 这些文件包含附加的HTTP头，在发送文档是一并发送。<br />
#<br />
#MetaDir .web</div>
<div>#<br />
# MetaSuffix: 指定包含meta信息的文件的后缀。<br />
#<br />
#MetaSuffix .meta</div>
<div>#<br />
# 可定制的错误响应(Apache类型)<br />
#&nbsp; 共三种风格：<br />
#<br />
#&nbsp;&nbsp;&nbsp; 1) 纯文本<br />
#ErrorDocument 500 "The server made a boo boo.<br />
#&nbsp; 注： 第一个"号用于表示是文本，实际不输出<br />
#<br />
#&nbsp;&nbsp;&nbsp; 2) 本地重定向<br />
#ErrorDocument 404 /missing.html<br />
#&nbsp; to redirect to local URL /missing.html<br />
#ErrorDocument 404 /cgi-bin/missing_handler.pl<br />
#&nbsp; 注：可重定向到任何一个服务器端的脚本或文档<br />
#<br />
#&nbsp;&nbsp;&nbsp; 3) 外部重定向<br />
#ErrorDocument 402 <a href="http://some.other_server.com/subscription_info.html" target="_blank">http://some.other_server.com/subscription_info.html</a><br />
#&nbsp; 注: 大部分与初始请求关联的环境变量对这样的脚本无效。<br />
#</div>
<div>#<br />
# 基于浏览器的定制操作<br />
#<br />
&lt;IfModule mod_setenvif.c&gt;</div>
<div>&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # 以下标识修改普通的HTTP响应操作。<br />
&nbsp;&nbsp;&nbsp; # 第一个标识针对Netscape2.x和其他无此功能的浏览器取消保持激活状态的功能<br />
&nbsp;&nbsp;&nbsp; # 这些浏览器在执行这些功能时会出错。<br />
&nbsp;&nbsp;&nbsp; # 第二个标识针对IE4.0b2设置。其中有一条不完整的HTTP/1.1指令<br />
&nbsp;&nbsp;&nbsp; # 在301或302（重定向）响应时不能正确的保持激活状态<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; BrowserMatch "Mozilla/2" nokeepalive<br />
&nbsp;&nbsp;&nbsp; BrowserMatch "MSIE 4".0b2;" nokeepalive downgrade-1.0 force-response-1.0</div>
<div>&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # 下面的标识通过不产生基本的1.1响应取消对违反HTTP/1.0标准的浏览器的响应。<br />
&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; BrowserMatch "RealPlayer 4".0" force-response-1.0<br />
&nbsp;&nbsp;&nbsp; BrowserMatch "Java/1".0" force-response-1.0<br />
&nbsp;&nbsp;&nbsp; BrowserMatch "JDK/1".0" force-response-1.0</div>
<div>&lt;/IfModule&gt;<br />
# 浏览器定制标识结束</div>
<div>#<br />
# 允许使用URL"<a href="http://servername/server-status" target="_blank">http://servername/server-status</a>"的形式查看服务器状态报告<br />
# 修改 ".your_domain.com"来匹配相应的域名以激活此功能<br />
#<br />
#&lt;Location /server-status&gt;<br />
#&nbsp;&nbsp;&nbsp; SetHandler server-status<br />
#&nbsp;&nbsp;&nbsp; Order deny,allow<br />
#&nbsp;&nbsp;&nbsp; Deny from all<br />
#&nbsp;&nbsp;&nbsp; Allow from .your_domain.com<br />
#&lt;/Location&gt;</div>
<div>#<br />
# 允许使用URL"://servername/server-info"（要求加载mod_info.c），<br />
# 来远程察看服务器配置报告。<br />
# 修改 ".your_domain.com"来匹配相应的域名以激活此功能<br />
#<br />
#&lt;Location /server-info&gt;<br />
#&nbsp;&nbsp;&nbsp; SetHandler server-info<br />
#&nbsp;&nbsp;&nbsp; Order deny,allow<br />
#&nbsp;&nbsp;&nbsp; Deny from all<br />
#&nbsp;&nbsp;&nbsp; Allow from .your_domain.com<br />
#&lt;/Location&gt;</div>
<div>#<br />
# 据报有人试图利用一个老的1.1漏洞。<br />
# 这个漏洞与CGI脚本在Apache服务器上分布有关。<br />
# 通过取消下面几行的注释符，可以将此类攻击记录转移到phf.apache.org上的记录脚本上。 <br />
# 或者也可以利用脚本scriptsupport/phf_abuse_log.cgi记录在本地服务器上。<br />
#<br />
#&lt;Location /cgi-bin/phf*&gt;<br />
#&nbsp;&nbsp;&nbsp; Deny from all<br />
#&nbsp;&nbsp;&nbsp; ErrorDocument 403 <a href="http://phf.apache.org/phf_abuse_log.cgi" target="_blank">http://phf.apache.org/phf_abuse_log.cgi</a><br />
#&lt;/Location&gt;</div>
<div>#<br />
# 代理服务器标识。取消下列行的注释符可激活代理服务器。<br />
#<br />
#&lt;IfModule mod_proxy.c&gt;<br />
#&nbsp;&nbsp;&nbsp; ProxyRequests On</div>
<div>#&nbsp;&nbsp;&nbsp; &lt;Directory proxy:*&gt;<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Order deny,allow<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Deny from all<br />
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Allow from .your_domain.com<br />
#&nbsp;&nbsp;&nbsp; &lt;/Directory&gt;</div>
<div>&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # 激活/取消处理HTTP/1.1 "Via:" 报头<br />
&nbsp;&nbsp;&nbsp; # ("Full"：加入服务器版本; "Block"：取消所有外发的Via: 报头)<br />
&nbsp;&nbsp;&nbsp; # 可设置值: Off | On | Full | Block<br />
&nbsp;&nbsp;&nbsp; #<br />
#&nbsp;&nbsp;&nbsp; ProxyVia On</div>
<div>&nbsp;&nbsp;&nbsp; #<br />
&nbsp;&nbsp;&nbsp; # 可修改下列各行并取消注释符来激活缓存。<br />
&nbsp;&nbsp;&nbsp; # (没有CacheRoot标识就不使用缓存)<br />
&nbsp;&nbsp;&nbsp; #<br />
#&nbsp;&nbsp;&nbsp; CacheRoot "E:/Program Files/Apache Group/Apache/proxy"<br />
#&nbsp;&nbsp;&nbsp; CacheSize 5<br />
#&nbsp;&nbsp;&nbsp; CacheGcInterval 4<br />
#&nbsp;&nbsp;&nbsp; CacheMaxExpire 24<br />
#&nbsp;&nbsp;&nbsp; CacheLastModifiedFactor 0.1<br />
#&nbsp;&nbsp;&nbsp; CacheDefaultExpire 1<br />
#&nbsp;&nbsp;&nbsp; NoCache a_domain.com another_domain.edu joes.garage_sale.com</div>
<div>#&lt;/IfModule&gt;<br />
# 代理标识结束</div>
<div>### 部分 3: 虚拟主机<br />
#<br />
# 虚拟主机: 如果希望在一台服务器上实现多个域名和主机名的服务，<br />
# 可设置VirtualHost来实现。Most configurations<br />
# 大部分的设置使用基于名称的虚拟主机，这样服务器就不必为IP地址操心。<br />
# 这些用星号在下面的标识中标出。<br />
#<br />
# 在试图设置虚拟主机前<br />
# 请阅读&lt;<a href="http://www.apache.org/docs/vhosts/">URL:</a><a href="http://www.apache.org/docs/vhosts/" target="_blank">http://www.apache.org/docs/vhosts/</a>&gt;中的文档。<br />
# 以了解细节问题。<br />
#<br />
# 可用命令行参数 '-S'来确认虚拟主机的设置。<br />
# </div>
<div>#<br />
# 使用基于名称的虚拟主机<br />
#<br />
#NameVirtualHost *</div>
<div>#<br />
# 虚拟主机实例:<br />
# 几乎所有的Apache标识都可用于虚拟主机内。<br />
# 第一个VirtualHost部分用于申请一个无重复的服务器名。<br />
#<br />
#&lt;VirtualHost *&gt;<br />
#&nbsp;&nbsp;&nbsp; ServerAdmin <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#119;&#101;&#98;&#109;&#97;&#115;&#116;&#101;&#114;&#64;&#100;&#117;&#109;&#109;&#121;&#45;&#104;&#111;&#115;&#116;&#46;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;">webmaster@dummy-host.example.com</a><br />
#&nbsp;&nbsp;&nbsp; DocumentRoot /www/docs/dummy-host.example.com<br />
#&nbsp;&nbsp;&nbsp; ServerName dummy-host.example.com<br />
#&nbsp;&nbsp;&nbsp; ErrorLog logs/dummy-host.example.com-error_log<br />
#&nbsp;&nbsp;&nbsp; CustomLog logs/dummy-host.example.com-access_log common<br />
#&lt;/VirtualHost&gt;</div>
<img src ="http://www.blogjava.net/bukebushuo/aggbug/229103.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bukebushuo/" target="_blank">蓝剑</a> 2008-09-16 10:53 <a href="http://www.blogjava.net/bukebushuo/articles/229103.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何利用模块限制Apache2用户带宽</title><link>http://www.blogjava.net/bukebushuo/articles/229100.html</link><dc:creator>蓝剑</dc:creator><author>蓝剑</author><pubDate>Tue, 16 Sep 2008 02:43:00 GMT</pubDate><guid>http://www.blogjava.net/bukebushuo/articles/229100.html</guid><wfw:comment>http://www.blogjava.net/bukebushuo/comments/229100.html</wfw:comment><comments>http://www.blogjava.net/bukebushuo/articles/229100.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bukebushuo/comments/commentRss/229100.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bukebushuo/services/trackbacks/229100.html</trackback:ping><description><![CDATA[此模块适用于提供文件下载的网站，限制文件下载速度。 <br />
apache2必须以DSO模式安装 <br />
下载bw_mod-0.6.gz <br />
Http://apache.ivn.cl <br />
Bandwidth Module <br />
Module homepage at Http://apache.ivn.cl <br />
<br />
下载bw_mod-0.6.gz <br />
#tar zxvf bw_mod-0.6.gz <br />
#cd bw_mod-0.6 <br />
#apxs -i -a -c bw_mod-0.6.c <br />
or <br />
#apxs2 -i -a -c bw_mod-0.6.c <br />
配置 (目录只看明白这一种）其它方法大家有空说一下。 <br />
例如限制soft目录下的文件下载速度，修改httpd.conf <br />
&lt;Directory "/var/www/html/soft"&gt;; <br />
BandWidthModule On <br />
BandWidth all 30720 <br />
&lt;/Directory&gt;; <br />
<br />
BandWidthModule On为启用带宽限制功能。 <br />
BandWidth all 30720第一个参数"all"为任何链接来源，第二个参数"30720"为限制带宽为30KB。 <br />
<br />
详细说明见bw_mod-0.6.txt <br />
<br />
绑定宽度模块（ON/OFF）（似乎翻译成限制带宽更好） <br />
为使该模块工作你需要设置为ON。缺省情况下模块是不能工作的。也将不限制任何事情， <br />
例如&#8220;BANDWIDTHMODULE ON <br />
<br />
限制带宽查错[ON/OFF] <br />
（缺省为OFF）当使其能工作时LOG将输出大量数据块到错误LOG，这些数据用于差错目的，并且不是经常需要的，如果你很好奇你可以使其工作，但是注意这将使你的LOG增大很多， <br />
例如：BANDWIDTHDEBUG ON <br />
<br />
FORCEBANDWIDTHMODULE（ON|OFF） <br />
缺省情况下。这一模块将捕获每一请求。这样做的目的是更容易配置，如果你禁止了这一功能，你将不得不手工添加输出过滤器，如果你只想让某些需求被BW模块处理这样是有用的。 <br />
例如：FORCEBANDWIDTHMODULE OFF <br />
ADD OUTPUTFILTERBYTYPE BW-MOD TEXT/HTML TEXT/PLAIN <br />
<br />
BANDWIDTH[FROM][BYTES/S] <br />
这个命令有两个参数。FROM是连接数据源，它可以是一个完全的主机，域的一部分，一个IP地址，一个网关（如192。168。0。0/24或192。168。0。0/255。255。255。0）或者全部。 <br />
第二个参数指明源所能达到的总速度，如果速度为0，将不限制速度。 <br />
例如：BANDWIDTH LOCALHOST 10240 <br />
BANDWIDTH 192。168。218。5 0 <br />
<br />
MINBANDWIDTH[FROM][BYTES/S] <br />
这一命令有两个参数，FROM是连接数据源，它可以是一个完全的主机，域的一部分，一个IP地址，一个网关（如192。168。0。0/24或192。168。0。0/255。255。255。0）或者全部。 <br />
第二个参数指明每一客户端所能拥有的最小速度，这是什么意思呢，如果你有一个总共100KBYTES的速度，并且你设置MINBANDWIDTH值为50，那么不管你有多少个客户，所有的客户都将有最小50K的下载速度， <br />
如果速度设置为0，你将使用缺省最小速度（256BYTES/S） <br />
还有一个特殊的值是-1，这一值意味着每一客户将有一个由BANDWIDTH决定的最高速度，请看例子： <br />
BANDWIDTH ALL 102400 <br />
MINBANDWIDTH ALL 50000 <br />
上例将使第一个客户有一个最高100K的速度。如果更多的客户连接速度将被相应分配但是每一客户将有至少50K的速度（即使你有50个客户）。 <br />
BANDWIDTH ALL 50000 <br />
MINBANDWIDTH ALL -1 <br />
上例是每一客户有50K的最高速度。 <br />
<br />
LARGEFILELIMIT[TYPE][MINIMUM SIZE][BYTES/S] <br />
TYPE。是是一个文件的后缀部分。或者使用*代表所有类型文件，你可以使用TGZ只匹配TAR-CAMPRESSED文件，。匹配影音文件，或者*匹配所有类型文件。 <br />
MINIMUM SIZE，是要匹配文件的大小（用KBYTES表示），这一方法你可以用于一个可能堵塞你带宽的巨大的影音文件。 <br />
最后一个参数不言自明：允许的速度 <br />
例如：LARGEFILELIMIT 。AVI 500 10240 <br />
这将限制一个大于（等于）500KB的影音文件以10KB/S的速度传送。 <br />
<br />
-BANDWIDTHPACKET[SIZE] <br />
大概你根本用不上这个，它的缺省值为8192，几乎对任何速度都是合适的， <br />
SIZE的大小必须在1024和131072之间，一个过小的包将引起最大速度减慢，模块将用更多的时间分割文件，如果你使用过大的值，模块将调整为更低的速度。 <br />
<br />
-BANDWIDTHERROR[ERROR] <br />
用
于传送个性化错误代码。缺省情况下，当达到最大连接时，模块将发布一个503
HTTP-SERVICE-UNAVAILABLE代码，对一些用户来说，收到错误信息是令人厌烦的。也不知道是哪里出错。你可以使用一个
errordocument指明网页出现503错误是你处于过重的连接负荷，但是有时候503并不由模块发布。 <br />
所以。你可以用此设置在达到最大连接时返回错误代码。你可以使用300到599之间的代码，请注意，一些错误代码已经被使用。所以在使用任何数字之前请查阅一下代码列表（在GOOGLE中搜寻一下HTTP ERROR） <br />
当测试时候。我曾经使用过错误代码510。这是已经被定义的代码 <br />
例如：个性化错误页 <br />
ERRORDOCUMENT 510/ERRORS/MAXEONEXCEEDED。HTML <br />
BANDWIDTHERROR 510 <br />
注意：有时候。个性化页不显示，我不能肯定问题所在。但是大多数情况下。它是由于被超过1024BYTES的网页固定了。无论如何。如果你需要使用ErrorDocument的帮助，参考APACHE文档 <br />
<br />
-MAXCONNECTION[FROM][MAX] <br />
有两个参数。FROM是连接数据源，它可以是一个完全的主机，域的一部分，一个IP地址，一个网关（如192。168。0。0/24或192。168。0。0/255。255。255。0）或者全部。 <br />
第二个参数是允许连接到源的最大连接数，任何超过最大连接数的连接将收到 503 Service Temporarily Unavailable <br />
你需要对相同的源使用BANDWIDTH限制。不需要设置最低连接限制。你可以使用不限制设置。你可能奇怪为什么。因为我用相同的存储空间进行BANDWIDTH限制和计算连接数 <br />
，所以我可以把存储空间节省下来。如果你不设置BANDWIDTH于同一源。MAXCONNECTION将被忽略。 <br />
例如： BandWidth all 0 <br />
MaxConnection all 20 <br />
or <br />
BandWidth all 0 <br />
BandWidth 192.168.0.0/24 10240 <br />
MaxConnection all 20 <br />
MaxConnection 192.168.0.0/24 5 <br />
请记住每一速度很大程度上依赖于你的连接，如果你没有连接你不能得到更高的速度。 <br />
记住如果你没有遵循指示并得到了莫名其妙的结果，请在发EMAIL给我之前重新检查你的配置。 <br />
<br />
FAQ <br />
（无特别命令） <br />
1 为什么使用BW—MOD <br />
如果你要限制一个站点所能使用 的最大速度或者限制每站点允许的最大连接。或者只是实验MOD <br />
一些人告诉我。他们首先使用它来阻止小站点提供影音图片或其他内容时堵塞他们所有带宽。 <br />
2我应该怎么做 <br />
首先。阅读文档。如果你不能使其工作。或者你想询问更多特性。请访问主页。并且提交请求。集注阅读文档和FAQ。如果请求已经提交。我将马上删除副本。 <br />
<br />
3（略） <br />
4 它是怎么工作的 <br />
这个模块设置一个你设置的配制所占有的共享内存。在这一空间它也存储当前使用的信息的计数（象当前连接，使用的BW，时间。发送的字节等） <br />
当你设置了一个BW限制。这个模块将进行数据分割。并且分段传送数据。在每段之间有一个小的延迟。这个延迟将被调整以在每一秒至少传送一段数据
<img src ="http://www.blogjava.net/bukebushuo/aggbug/229100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bukebushuo/" target="_blank">蓝剑</a> 2008-09-16 10:43 <a href="http://www.blogjava.net/bukebushuo/articles/229100.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[伊达原创]APACHE环境下大流量下载设置微调</title><link>http://www.blogjava.net/bukebushuo/articles/229099.html</link><dc:creator>蓝剑</dc:creator><author>蓝剑</author><pubDate>Tue, 16 Sep 2008 02:40:00 GMT</pubDate><guid>http://www.blogjava.net/bukebushuo/articles/229099.html</guid><wfw:comment>http://www.blogjava.net/bukebushuo/comments/229099.html</wfw:comment><comments>http://www.blogjava.net/bukebushuo/articles/229099.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bukebushuo/comments/commentRss/229099.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bukebushuo/services/trackbacks/229099.html</trackback:ping><description><![CDATA[<div target="_blank"><a href="http://semiscon.blog.51cto.com/157645/25468" target="_blank"><strong><font color="#0000ff">[伊达原创] 在APACHE环境下配置下载服务器</font></strong></a> </div>
<div target="_blank">&nbsp;</div>
<div target="_blank">具体配置如下</div>
<div target="_blank">&nbsp;</div>
<div target="_blank">DocumentRoot "/downfile"</div>
<div target="_blank"><font color="#ff0000">BandWidthModule On<br />
ForceBandWidthModule On</font></div>
<div target="_blank">&lt;Location /&gt;<br />
<font color="#ff0000">&nbsp;MaxConnPerIP 1</font><br />
&lt;/Location&gt;</div>
<div target="_blank">&lt;Directory /&gt;<br />
&nbsp;&nbsp;&nbsp; Options FollowSymLinks<br />
&nbsp;&nbsp;&nbsp; AllowOverride None<br />
<font color="#ff0000">&nbsp;&nbsp;&nbsp; BandWidth&nbsp;&nbsp;&nbsp; all 40960000</font><br />
&lt;/Directory&gt;</div>
<div target="_blank">RewriteEngine on<br />
RewriteCond %{HTTP_REFERER} !^<a href="http://download.92wy.com./" target="_blank">http://download.92wy.com.</a>*$ [NC]<br />
RewriteCond %{HTTP_REFERER} !^<a href="http://down.92wy.com./" target="_blank">http://down.92wy.com.</a>*$ [NC]<br />
RewriteCond %{HTTP_REFERER} !^<a href="http://games.shangdu.com./" target="_blank">http://games.shangdu.com.</a>*$ [NC]<br />
RewriteCond %{HTTP_REFERER} !^<a href="http://game.shangdu.com./" target="_blank">http://game.shangdu.com.</a>*$ [NC]<br />
RewriteRule .*$ <a href="http://download.92wy.com/err.asp" target="_blank">http://download.92wy.com/err.asp</a> [R,NC]</div>
<div target="_blank">&lt;Directory "/downfile"&gt;<br />
&nbsp;&nbsp;&nbsp; Options FollowSymLinks<br />
&nbsp;&nbsp;&nbsp; AllowOverride None<br />
&nbsp;&nbsp;&nbsp; Order allow,deny<br />
&nbsp;&nbsp;&nbsp; Allow from all<br />
&lt;/Directory&gt;</div>
<div target="_blank">&nbsp;</div>
<div target="_blank"><font color="#ff0000">BandWidth&nbsp;&nbsp;&nbsp; all 40960000&nbsp; </font><font color="#0000ff">其实单位是字节，字面上意思是限速40兆，其实下载速率只有100K++ ，测试环境是晚上9:30-10:20 和早上12：00---2：40 这就奇怪了，难道是单位搞错了？ 我根据限速的不同做了一个记录进行对比。</font></div>
<div target="_blank">&nbsp;</div>
<div target="_blank"><font color="#0000ff">首先说明的是测试的时候，系统APACHE进程数在500左右~</font></div>
<div target="_blank"><font color="#0000ff">第一次限速 <font color="#ff0000">2048000 2M</font>的理论速度 在客户端下载的时候网际快车成波浪号呈现，速度最多是</font><font color="#ff0000">5k-0k-5k..........<img onclick='window.open("http://blog.51cto.com/viewpic.php?refimg=" + this.src)' alt="" src="http://blog.51cto.com/editor/icons/etc_05.gif" border="0" /></font></div>
<div target="_blank"><font color="#0000ff">第二次限速 <font color="#ff0000">20480000 大胆的设置成20M </font>看看实际下载速度能有多少，等服务重启以后再测试速度达到<font color="#ff0000">56k-60k</font>左右了</font></div>
<div target="_blank"><font color="#0000ff">第三次限速 是根据前两次设置的速率来改的，将速度限制成为<font color="#ff0000">40960000 40M</font>，在进程数达到500左右的时候，内存的消耗达到正常，cache数值没有那么高了，只有50M左右。对比一下top上关于内存的数值，你就可以发现限速没有做好是对机器最起消耗作用的。</font></div>
<div target="_blank"><font color="#0000ff">这时候主下载服务器已经可以在晚上高峰期承接500个左右的用户的下载需求了，速度平均在<font color="#ff0000">100k-200k</font>左右。我是机房直接做的测试，得到的数据应该不受太多带宽的影响。</font></div>
<div target="_blank">&nbsp;</div>
<div target="_blank"><font color="#0000ff">下载服务器一直都是系统维护人员最头痛的东西，首先是容易挂，
其次是经常更新和备份，最后是速度上不去网友们骂你。呵呵
第一次在机房发现下载时成波浪号曲线时还以为是系统的原因，结果检查了一边APACHE以后发现没有配置上的错误。最后就选择了尝试一下修改限速数值看
看，最后发现了有一定比例关系的。可是当时在公司做实验的时候，在BandWidth上设置的数值确实可以正常限速，现在想想当时只考虑了下载时的上限速
度并没有考虑到服务器承受过多压力以后的运行能力。</font></div>
<div target="_blank">&nbsp;</div>
<div target="_blank"><font color="#0000ff">总结一下，好的下载服务器配置应该是可以考虑到超压情况下的用户下载速度上限设置和最低速度的保证！</font></div>
<div target="_blank">&nbsp;</div>
<div target="_blank"><font color="#0000ff">以上只是我一点实际工作的感受，有什么不完善的地方欢迎及时给我提出批评！</font></div>
<img src ="http://www.blogjava.net/bukebushuo/aggbug/229099.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bukebushuo/" target="_blank">蓝剑</a> 2008-09-16 10:40 <a href="http://www.blogjava.net/bukebushuo/articles/229099.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>