<?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>idv2 &#187; proxy</title>
	<atom:link href="http://tech.idv2.com/tag/proxy/feed/" rel="self" type="application/rss+xml" />
	<link>http://tech.idv2.com</link>
	<description>关注Web开发技术，关注Internet。</description>
	<lastBuildDate>Tue, 27 Jul 2010 12:54:54 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>APS: 代理认证的好帮手</title>
		<link>http://tech.idv2.com/2007/03/23/aps-proxy-auth-helper/</link>
		<comments>http://tech.idv2.com/2007/03/23/aps-proxy-auth-helper/#comments</comments>
		<pubDate>Fri, 23 Mar 2007 13:30:38 +0000</pubDate>
		<dc:creator>charlee</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[proxy]]></category>

		<guid isPermaLink="false">http://tech.inspiremedia.org/archives/354.html</guid>
		<description><![CDATA[<!-- begin Pukiwiki generated code--><p>最近公司启用了域，并且代理服务器加上了NTLM认证，只有加入域的电脑才能够使用。
这样一来，虽然IE和Firefox能够正常通过代理上网，但是像FlashGet等不支持NTLM代理认证的
下载工具就没法使用了。</p>
<p>不过今天发现了<a href="http://ntlmaps.sourceforge.net/">APS</a>这个工具，它能够帮你进行NTLM代理认证，
使得不支持NTLM认证的工具也能正常使用代理。其方法就是在本地机器上再架设一个不需要认证的代理，
FlashGet使用这个代理上网，而APS接收到FlashGet的请求之后，将其加上认证信息，再转发给
真正的代理服务器。</p>
<p>目前最新版为 0.9.9.0.1，下载最新版解压缩即可。它用python写成，需要先安装<a href="http://www.python.org/">Python</a>才能正常使用，
推荐使用2.4以上版本。</p>
<p>解压之后修改里面的server.cfg文件，进行以下设置。</p>
<pre># 本地代理的监听端口
LISTEN_PORT:5865

# 实际的代理地址
PARENT_PROXY:172.28.14.3

# 实际的代理端口
PARENT_PROXY_PORT:8080

# 你的机器在域上的机器名
NT_HOSTNAME:&lt;机器名&gt;

# 你的机器加入的域的名称
NT_DOMAIN:&lt;域名称&gt;

# 域用户名
USER:&lt;用户名&gt;

# 域密码
PASSWORD:&lt;密码&gt;</pre>
<p>之后打开runserver.bat，修改其中的python路径指向正确的python解释器即可。</p>
<p>运行runserver.bat，APS即在本机的5865端口架设一个代理，然后令FlashGet使用127.0.0.1:5865作为代理即可正常使用。</p>
<!-- end Pukiwiki generated code-->
]]></description>
			<content:encoded><![CDATA[<!-- begin Pukiwiki generated code--><p>最近公司启用了域，并且代理服务器加上了NTLM认证，只有加入域的电脑才能够使用。
这样一来，虽然IE和Firefox能够正常通过代理上网，但是像FlashGet等不支持NTLM代理认证的
下载工具就没法使用了。</p>
<p>不过今天发现了<a href="http://ntlmaps.sourceforge.net/">APS</a>这个工具，它能够帮你进行NTLM代理认证，
使得不支持NTLM认证的工具也能正常使用代理。其方法就是在本地机器上再架设一个不需要认证的代理，
FlashGet使用这个代理上网，而APS接收到FlashGet的请求之后，将其加上认证信息，再转发给
真正的代理服务器。</p>
<p>目前最新版为 0.9.9.0.1，下载最新版解压缩即可。它用python写成，需要先安装<a href="http://www.python.org/">Python</a>才能正常使用，
推荐使用2.4以上版本。</p>
<p>解压之后修改里面的server.cfg文件，进行以下设置。</p>
<pre># 本地代理的监听端口
LISTEN_PORT:5865

# 实际的代理地址
PARENT_PROXY:172.28.14.3

# 实际的代理端口
PARENT_PROXY_PORT:8080

# 你的机器在域上的机器名
NT_HOSTNAME:&lt;机器名&gt;

# 你的机器加入的域的名称
NT_DOMAIN:&lt;域名称&gt;

# 域用户名
USER:&lt;用户名&gt;

# 域密码
PASSWORD:&lt;密码&gt;</pre>
<p>之后打开runserver.bat，修改其中的python路径指向正确的python解释器即可。</p>
<p>运行runserver.bat，APS即在本机的5865端口架设一个代理，然后令FlashGet使用127.0.0.1:5865作为代理即可正常使用。</p>
<!-- end Pukiwiki generated code-->
]]></content:encoded>
			<wfw:commentRss>http://tech.idv2.com/2007/03/23/aps-proxy-auth-helper/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>利用delegate调试Ajax应用</title>
		<link>http://tech.idv2.com/2007/01/30/debug-javascript-at-localhost-with-delegate/</link>
		<comments>http://tech.idv2.com/2007/01/30/debug-javascript-at-localhost-with-delegate/#comments</comments>
		<pubDate>Mon, 29 Jan 2007 16:03:24 +0000</pubDate>
		<dc:creator>charlee</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[delegate]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[proxy]]></category>

		<guid isPermaLink="false">http://tech.inspiremedia.org/archives/338.html</guid>
		<description><![CDATA[<!-- begin Pukiwiki generated code--><p>最近一直在开发Ajax应用程序。众所周知Ajax的特点是客户端和服务器分离，
客户端通常由纯Javascript组成，通过XMLHttpRequest对象与服务器通信。
在调试客户端代码时，如果服务器开在本地，尚可通过samba等方式直接编辑
服务器上的客户端js代码，倘若服务器在异地，那么每次修改js代码后通过FTP等
方式上传之后再调试就十分费事。说到这里自然会想到将js代码放到本地，
然而XMLHttpRequest却只能访问同一域名下的URL，本地的js代码无法直接使用
远程服务器上的服务。</p>
<p>迷茫之际，同事介绍了delegate这款软件，利用它即可实现本地调试客户端代码。</p>
<p>delegate可以在<a href="http://www.delegate.org/delegate/">这里</a>下载。
delegate实际上是一个功能强大的代理服务器，它有个类似于Linux的mount功能，
能够将Internet上的URL映射到本地。利用这个功能，
即可将远程的服务器端和本地的客户端集成到同一个域名下，
实现客户端代码的本地调试。</p>
<p>方法如下：</p>
<ol class="list1" style="padding-left:16px;margin-left:16px"><li>将Apache配置到本机的8080端口，然后将客户端代码放在htdocs下，
使之能够通过 <a href="http://localhost:8080/client/">http://localhost:8080/client/</a> 访问。</li>
<li><a href="http://www.delegate.org/delegate/">下载delegate</a>并解压缩。</li>
<li>编辑以下的配置文件 delegate.cfg。
<pre>-P80
ADMIN=&quot;yourname@yourmail.com&quot;
MOUNT=&quot;/client/* http://localhost:8080/client/*&quot;
MOUNT=&quot;/cgi-bin/* http://server-address/cgi-bin/*&quot;</pre>
第一行的 -P80 指定delegate使用80端口；第二行的ADMIN指定管理员邮件地址，
可以随意设置；第三行将客户端映射到 delegate 的 /client/ 路径下；
第四行将远程服务器目录映射到 delegate 的 /cgi-bin/ 路径下。<br />
另外，如果你需要通过代理服务器访问远程服务器，可以这样设置：
<pre>MOUNT=&quot;/cgi-bin/* http://server-address/cgi-bin/*&quot; PROXY=&quot;代理服务器地址:端口&quot;</pre></li>
<li>在命令行输入以下命令安装delegate。注意不同版本的delegate的可执行文件名不同。
<pre>dg9.4.1.exe +=delegate.cfg</pre></li>
<li>打开浏览器，访问 <a href="http://localhost/client/">http://localhost/client/</a>。这样即可随时看到对js代码的修改。</li></ol>
<p>实际上，用好这个方法还可以“盗用”许多网站的服务，即自己开发客户端，
再通过 delegate 将请求转发给服务器。其方法不再详述。</p>
<!-- end Pukiwiki generated code-->
]]></description>
			<content:encoded><![CDATA[<!-- begin Pukiwiki generated code--><p>最近一直在开发Ajax应用程序。众所周知Ajax的特点是客户端和服务器分离，
客户端通常由纯Javascript组成，通过XMLHttpRequest对象与服务器通信。
在调试客户端代码时，如果服务器开在本地，尚可通过samba等方式直接编辑
服务器上的客户端js代码，倘若服务器在异地，那么每次修改js代码后通过FTP等
方式上传之后再调试就十分费事。说到这里自然会想到将js代码放到本地，
然而XMLHttpRequest却只能访问同一域名下的URL，本地的js代码无法直接使用
远程服务器上的服务。</p>
<p>迷茫之际，同事介绍了delegate这款软件，利用它即可实现本地调试客户端代码。</p>
<p>delegate可以在<a href="http://www.delegate.org/delegate/">这里</a>下载。
delegate实际上是一个功能强大的代理服务器，它有个类似于Linux的mount功能，
能够将Internet上的URL映射到本地。利用这个功能，
即可将远程的服务器端和本地的客户端集成到同一个域名下，
实现客户端代码的本地调试。</p>
<p>方法如下：</p>
<ol class="list1" style="padding-left:16px;margin-left:16px"><li>将Apache配置到本机的8080端口，然后将客户端代码放在htdocs下，
使之能够通过 <a href="http://localhost:8080/client/">http://localhost:8080/client/</a> 访问。</li>
<li><a href="http://www.delegate.org/delegate/">下载delegate</a>并解压缩。</li>
<li>编辑以下的配置文件 delegate.cfg。
<pre>-P80
ADMIN=&quot;yourname@yourmail.com&quot;
MOUNT=&quot;/client/* http://localhost:8080/client/*&quot;
MOUNT=&quot;/cgi-bin/* http://server-address/cgi-bin/*&quot;</pre>
第一行的 -P80 指定delegate使用80端口；第二行的ADMIN指定管理员邮件地址，
可以随意设置；第三行将客户端映射到 delegate 的 /client/ 路径下；
第四行将远程服务器目录映射到 delegate 的 /cgi-bin/ 路径下。<br />
另外，如果你需要通过代理服务器访问远程服务器，可以这样设置：
<pre>MOUNT=&quot;/cgi-bin/* http://server-address/cgi-bin/*&quot; PROXY=&quot;代理服务器地址:端口&quot;</pre></li>
<li>在命令行输入以下命令安装delegate。注意不同版本的delegate的可执行文件名不同。
<pre>dg9.4.1.exe +=delegate.cfg</pre></li>
<li>打开浏览器，访问 <a href="http://localhost/client/">http://localhost/client/</a>。这样即可随时看到对js代码的修改。</li></ol>
<p>实际上，用好这个方法还可以“盗用”许多网站的服务，即自己开发客户端，
再通过 delegate 将请求转发给服务器。其方法不再详述。</p>
<!-- end Pukiwiki generated code-->
]]></content:encoded>
			<wfw:commentRss>http://tech.idv2.com/2007/01/30/debug-javascript-at-localhost-with-delegate/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WinHTTP代理的设置方法</title>
		<link>http://tech.idv2.com/2005/04/13/use-proxy-in-winhttp/</link>
		<comments>http://tech.idv2.com/2005/04/13/use-proxy-in-winhttp/#comments</comments>
		<pubDate>Wed, 13 Apr 2005 01:38:17 +0000</pubDate>
		<dc:creator>charlee</dc:creator>
				<category><![CDATA[windows]]></category>
		<category><![CDATA[proxy]]></category>

		<guid isPermaLink="false">http://charlee.itbdns.com/tech/archive/48.html</guid>
		<description><![CDATA[<!-- begin Pukiwiki generated code--><p>WinHTTP代理就是Windows Update所使用的代理。在局域网内使用代理服务器访问Internet的情况下，进行Windows Update就需要设置WinHTTP代理。</p>
<p>该代理设置需要使用如下命令：</p>
<p>proxycfg</p>
<p>用法:</p>
<pre>   proxycfg -?  : 查看帮助信息
   proxycfg     : 查看当前 WinHTTP 代理设置
   proxycfg [-d] [-p &lt;server-name&gt; [&lt;bypass-list&gt;]]
       -d : 设置直接访问
       -p : 设置代理服务器和可选的旁路列表
   proxycfg -u  : 从当前用户的 Microsoft Internet Explorer
                  的手工设置导入代理设置(在 HKCU 中)</pre>
<!-- end Pukiwiki generated code-->
]]></description>
			<content:encoded><![CDATA[<!-- begin Pukiwiki generated code--><p>WinHTTP代理就是Windows Update所使用的代理。在局域网内使用代理服务器访问Internet的情况下，进行Windows Update就需要设置WinHTTP代理。</p>
<p>该代理设置需要使用如下命令：</p>
<p>proxycfg</p>
<p>用法:</p>
<pre>   proxycfg -?  : 查看帮助信息
   proxycfg     : 查看当前 WinHTTP 代理设置
   proxycfg [-d] [-p &lt;server-name&gt; [&lt;bypass-list&gt;]]
       -d : 设置直接访问
       -p : 设置代理服务器和可选的旁路列表
   proxycfg -u  : 从当前用户的 Microsoft Internet Explorer
                  的手工设置导入代理设置(在 HKCU 中)</pre>
<!-- end Pukiwiki generated code-->
]]></content:encoded>
			<wfw:commentRss>http://tech.idv2.com/2005/04/13/use-proxy-in-winhttp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>wget中使用代理的方法</title>
		<link>http://tech.idv2.com/2005/03/21/use-proxy-in-wget/</link>
		<comments>http://tech.idv2.com/2005/03/21/use-proxy-in-wget/#comments</comments>
		<pubDate>Sun, 20 Mar 2005 16:14:37 +0000</pubDate>
		<dc:creator>charlee</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[proxy]]></category>

		<guid isPermaLink="false">http://charlee.itbdns.com/tech/archive/36.html</guid>
		<description><![CDATA[<!-- begin Pukiwiki generated code--><p>设置如下环境变量：</p>
<pre>export http_proxy=proxy_ip:proxy_port</pre>
<p>如果是ftp代理的话则为</p>
<pre>export ftp_proxy=proxy_ip:proxy_port</pre>
<p>例如</p>
<pre>export http_proxy=10.1.1.2:8080</pre>
<p>注意代理IP的前面不要加http://等</p>
<!-- end Pukiwiki generated code-->
]]></description>
			<content:encoded><![CDATA[<!-- begin Pukiwiki generated code--><p>设置如下环境变量：</p>
<pre>export http_proxy=proxy_ip:proxy_port</pre>
<p>如果是ftp代理的话则为</p>
<pre>export ftp_proxy=proxy_ip:proxy_port</pre>
<p>例如</p>
<pre>export http_proxy=10.1.1.2:8080</pre>
<p>注意代理IP的前面不要加http://等</p>
<!-- end Pukiwiki generated code-->
]]></content:encoded>
			<wfw:commentRss>http://tech.idv2.com/2005/03/21/use-proxy-in-wget/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用Apache架设代理服务器</title>
		<link>http://tech.idv2.com/2004/12/04/create-proxy-with-apache/</link>
		<comments>http://tech.idv2.com/2004/12/04/create-proxy-with-apache/#comments</comments>
		<pubDate>Fri, 03 Dec 2004 16:01:04 +0000</pubDate>
		<dc:creator>charlee</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://tech.idv2.com/2004/12/04/create-proxy-with-apache/</guid>
		<description><![CDATA[<!-- begin Pukiwiki generated code--><p>众所周知Apache是目前最优秀的HTTP服务器。实际上它不仅能当作服务器使用，也能够被用来架设代理服务器。本文就如何使用Apache架设HTTP代理服务器进行说明。</p>
<p>本文将基于Win32版的Apache 2.0.47进行说明。以前的Apache 1.x版配置方法稍有不同，但这里不作说明。</p>
<!-- end Pukiwiki generated code--><span id="more-21"></span><!-- begin Pukiwiki generated code--><p>首先是Apache的安装。从 <a href="http://www.apache.org">http://www.apache.org</a> 上下载Apache的安装程序，双击安装程序进行安装。安装好之后屏幕右下方系统托盘中会出现一个红色的羽毛状图标，那就是Apache的控制程序。单击此图标以启动Apache服务器。这时打开IE并在IE的地址栏中输入<a href="http://localhost/">http://localhost/</a> 应当能够看到Apache的欢迎画面。</p>
<p>接下来我们修改Apache的配置文件使其支持HTTP代理服务器功能。用文本编辑器打开httpd.conf文件。该文件位于Apache安装目录的conf目录下。如果你在安装Apache的时候没有改变安装路径，那么它应当位于C:\Program Files\Apache Group\Apache\conf\httpd.conf。</p>
<p>首先要添加代理服务器模块。找到下面这几行：</p>
<pre>#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so</pre>
<p>去掉前面的#号使相应的模块生效。然后使用托盘中的Apache控制程序重新启动Apache。（也可以使用命令行net stop apache2然后net start apache2命令进行服务器重启。）这时Apache应该能够正常启动，虽然现在它还不是代理服务器。</p>
<p>然后我们在配置文件中加入下面这一行：</p>
<pre>ProxyRequests   On</pre>
<p>然后再次重新启动Apache。这时Apache就是HTTP代理服务器了。打开IE，选择菜单“工具→Internet选项→连接→局域网设置”，选中“为LAN使用代理服务器”，然后在下方的地址中填入127.0.0.1，端口填写80。填好之后确定，此时如果能够通过IE连接到Internet，则说明代理配置正确无误。
（注：此处的端口80是httpd.conf中Listen指令指定的端口号。如果你修改了Listen命令使Apache监听其他端口，那么在IE的设置中也请做相应的改变。另外，如果你使用拨号连接的话，那么请在“工具→Internet选项→连接”中修改相应的拨号连接的代理设置，而不要修改局域网代理设置）</p>
<p>接下来我们尝试一下访问控制。编辑httpd.conf，加入下面的设置：</p>
<pre>&lt;Proxy *&gt;
    Order allow,deny
    Allow from all
    Deny from 127.0.0.1
&lt;/Proxy&gt;</pre>
<p>此配置的意思是，允许除本地计算机之外的所有计算机访问代理。然后重新启动Apache。再次试图使用IE连接Internet，你会收到类似于下面的信息：</p>
<pre>Forbidden
You don't have permission to access http://www.google.com/ on this server.</pre>
<p>说明本地计算机已经被禁止使用代理。而相反地，下面的设置：</p>
<pre>&lt;Proxy *&gt;
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
&lt;/Proxy&gt;</pre>
<p>的意思是，仅允许本地计算机使用代理服务器。</p>
<p>Proxy指令后面的*号表示客户端使用代理服务器访问的目的地址。在上面两个例子中，*号表示所有地址，即禁止使用代理服务器访问所有地址。而如果想仅禁止某一些地址时，可以参考下面的例子：</p>
<pre>&lt;Proxy http://www.google.com/&gt;
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
&lt;/Proxy&gt;

&lt;Proxy http://www.yahoo.co.jp/r/*&gt;
    Order allow,deny
    Allow from all
    Deny from 127.0.0.1
&lt;/Proxy&gt;</pre>
<p>上面这个例子的意思是，仅允许本地计算机访问<a href="http://www.google.com/">http://www.google.com/</a>，并且禁止本地计算机对于<a href="http://www.yahoo.co.jp/r/">http://www.yahoo.co.jp/r/</a>下的资源的访问。由于Apache的Proxy指令目前还不能够支持多个目标地址，也就是说不能写成&lt;Proxy <a href="http://www.google.com/">http://www.google.com/</a> <a href="http://www.yahoo.co.jp">http://www.yahoo.co.jp</a>&gt;的形式，因此如果你想对多个目标地址做出限制时，必须使用多个Proxy指令。</p>
<p>如果想对所有使用者（而不仅仅是部分使用者）访问某些地址做出限制时，可以使用ProxyBlock的指令：</p>
<pre>ProxyBlock microsoft co.jp www.google.com</pre>
<p>上面这条指令阻挡了三种目标地址：包含microsoft的地址，包含co.jp的地址，包含www.google.com的地址。但是实际使用IE测试时你会发现，<a href="http://www.google.com/">http://www.google.com/</a>和<a href="http://www.google.co.kr/">http://www.google.co.kr/</a>（Google韩国站）将都不能访问，而<a href="http://www.google.co.kr/">http://www.google.co.kr/</a>并没有满足上面阻挡的规则。这是因为，Apache启动时将对阻挡地址中看起来像是主机名或者域名的字符串进行域名解析，如果解析成功就阻止掉相应的目标IP地址。而www.google.co.kr和www.google.com的IP地址相同，因此www.google.co.kr也同时被阻挡了。另外，由于Apache试图去解析域名，因此当你使用ProxyBlock时，Apache的启动时间会变长。</p>
<p>另外要注意，如果写ProxyBlock *，那么将不能通过该代理服务器来访问任何地址。</p>
<p>最后再介绍一下二级代理。使用Apache可以做二级代理，即让本身已经是代理服务器的Apache通过其他的代理服务器来连接Internet。加入以下指令：</p>
<pre>ProxyRemote * http://12.34.56.78:8080</pre>
<p>即可让Apache将12.34.56.78:8080作为代理服务器。ProxyRemote指令之后的第一个参数表示协议名称或目标地址，例如：</p>
<pre>ProxyRemote ftp http://12.34.56.78:8080    # 对于所有ftp请求使用二级代理
ProxyRemote http://www.google.com/ http://12.34.56.78:8080    # 当访问www.google.com时使用二级代理</pre>
<!-- end Pukiwiki generated code-->
]]></description>
			<content:encoded><![CDATA[<!-- begin Pukiwiki generated code--><p>众所周知Apache是目前最优秀的HTTP服务器。实际上它不仅能当作服务器使用，也能够被用来架设代理服务器。本文就如何使用Apache架设HTTP代理服务器进行说明。</p>
<p>本文将基于Win32版的Apache 2.0.47进行说明。以前的Apache 1.x版配置方法稍有不同，但这里不作说明。</p>
<!-- end Pukiwiki generated code--><span id="more-21"></span><!-- begin Pukiwiki generated code--><p>首先是Apache的安装。从 <a href="http://www.apache.org">http://www.apache.org</a> 上下载Apache的安装程序，双击安装程序进行安装。安装好之后屏幕右下方系统托盘中会出现一个红色的羽毛状图标，那就是Apache的控制程序。单击此图标以启动Apache服务器。这时打开IE并在IE的地址栏中输入<a href="http://localhost/">http://localhost/</a> 应当能够看到Apache的欢迎画面。</p>
<p>接下来我们修改Apache的配置文件使其支持HTTP代理服务器功能。用文本编辑器打开httpd.conf文件。该文件位于Apache安装目录的conf目录下。如果你在安装Apache的时候没有改变安装路径，那么它应当位于C:\Program Files\Apache Group\Apache\conf\httpd.conf。</p>
<p>首先要添加代理服务器模块。找到下面这几行：</p>
<pre>#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so</pre>
<p>去掉前面的#号使相应的模块生效。然后使用托盘中的Apache控制程序重新启动Apache。（也可以使用命令行net stop apache2然后net start apache2命令进行服务器重启。）这时Apache应该能够正常启动，虽然现在它还不是代理服务器。</p>
<p>然后我们在配置文件中加入下面这一行：</p>
<pre>ProxyRequests   On</pre>
<p>然后再次重新启动Apache。这时Apache就是HTTP代理服务器了。打开IE，选择菜单“工具→Internet选项→连接→局域网设置”，选中“为LAN使用代理服务器”，然后在下方的地址中填入127.0.0.1，端口填写80。填好之后确定，此时如果能够通过IE连接到Internet，则说明代理配置正确无误。
（注：此处的端口80是httpd.conf中Listen指令指定的端口号。如果你修改了Listen命令使Apache监听其他端口，那么在IE的设置中也请做相应的改变。另外，如果你使用拨号连接的话，那么请在“工具→Internet选项→连接”中修改相应的拨号连接的代理设置，而不要修改局域网代理设置）</p>
<p>接下来我们尝试一下访问控制。编辑httpd.conf，加入下面的设置：</p>
<pre>&lt;Proxy *&gt;
    Order allow,deny
    Allow from all
    Deny from 127.0.0.1
&lt;/Proxy&gt;</pre>
<p>此配置的意思是，允许除本地计算机之外的所有计算机访问代理。然后重新启动Apache。再次试图使用IE连接Internet，你会收到类似于下面的信息：</p>
<pre>Forbidden
You don't have permission to access http://www.google.com/ on this server.</pre>
<p>说明本地计算机已经被禁止使用代理。而相反地，下面的设置：</p>
<pre>&lt;Proxy *&gt;
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
&lt;/Proxy&gt;</pre>
<p>的意思是，仅允许本地计算机使用代理服务器。</p>
<p>Proxy指令后面的*号表示客户端使用代理服务器访问的目的地址。在上面两个例子中，*号表示所有地址，即禁止使用代理服务器访问所有地址。而如果想仅禁止某一些地址时，可以参考下面的例子：</p>
<pre>&lt;Proxy http://www.google.com/&gt;
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
&lt;/Proxy&gt;

&lt;Proxy http://www.yahoo.co.jp/r/*&gt;
    Order allow,deny
    Allow from all
    Deny from 127.0.0.1
&lt;/Proxy&gt;</pre>
<p>上面这个例子的意思是，仅允许本地计算机访问<a href="http://www.google.com/">http://www.google.com/</a>，并且禁止本地计算机对于<a href="http://www.yahoo.co.jp/r/">http://www.yahoo.co.jp/r/</a>下的资源的访问。由于Apache的Proxy指令目前还不能够支持多个目标地址，也就是说不能写成&lt;Proxy <a href="http://www.google.com/">http://www.google.com/</a> <a href="http://www.yahoo.co.jp">http://www.yahoo.co.jp</a>&gt;的形式，因此如果你想对多个目标地址做出限制时，必须使用多个Proxy指令。</p>
<p>如果想对所有使用者（而不仅仅是部分使用者）访问某些地址做出限制时，可以使用ProxyBlock的指令：</p>
<pre>ProxyBlock microsoft co.jp www.google.com</pre>
<p>上面这条指令阻挡了三种目标地址：包含microsoft的地址，包含co.jp的地址，包含www.google.com的地址。但是实际使用IE测试时你会发现，<a href="http://www.google.com/">http://www.google.com/</a>和<a href="http://www.google.co.kr/">http://www.google.co.kr/</a>（Google韩国站）将都不能访问，而<a href="http://www.google.co.kr/">http://www.google.co.kr/</a>并没有满足上面阻挡的规则。这是因为，Apache启动时将对阻挡地址中看起来像是主机名或者域名的字符串进行域名解析，如果解析成功就阻止掉相应的目标IP地址。而www.google.co.kr和www.google.com的IP地址相同，因此www.google.co.kr也同时被阻挡了。另外，由于Apache试图去解析域名，因此当你使用ProxyBlock时，Apache的启动时间会变长。</p>
<p>另外要注意，如果写ProxyBlock *，那么将不能通过该代理服务器来访问任何地址。</p>
<p>最后再介绍一下二级代理。使用Apache可以做二级代理，即让本身已经是代理服务器的Apache通过其他的代理服务器来连接Internet。加入以下指令：</p>
<pre>ProxyRemote * http://12.34.56.78:8080</pre>
<p>即可让Apache将12.34.56.78:8080作为代理服务器。ProxyRemote指令之后的第一个参数表示协议名称或目标地址，例如：</p>
<pre>ProxyRemote ftp http://12.34.56.78:8080    # 对于所有ftp请求使用二级代理
ProxyRemote http://www.google.com/ http://12.34.56.78:8080    # 当访问www.google.com时使用二级代理</pre>
<!-- end Pukiwiki generated code-->
]]></content:encoded>
			<wfw:commentRss>http://tech.idv2.com/2004/12/04/create-proxy-with-apache/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
