Ubuntu中Apache反向代理的使用

环境:Ubuntu 6.10 edgy, Apache 2.55

正常启用的方法很简单,首先要启用apache的proxy模块:

a2enmod proxy

然后在apache的conf中进行相应配置即可,比如我把/ubuntu反向代理到内网的另外一台主机,对公网进行服务:

<Location /ubuntu>
    ProxyPass http://svr5/ubuntu
    ProxyPassReverse http://svr5/ubuntu
</Location>

这样当公网用户访问我的主机的/ubuntu子目录时(注意/ubuntu这个Alias无需定义),Apache就会从访问内网服务器svr5的相应内容,并返回给用户。

以上是正常定义方式,不过在ubuntu下调用时却出现403错误,查看apache的error.log发现:

[Sun Apr 01 19:35:57 2007] [error] [client 121.*.*.*] client denied by server configuration: proxy:http://svr5/ubuntu/

查看svr5的log没有访问记录,就是本服务器的配置中的问题,再查看/etc/apache/mods-avaliable/proxy.conf,发现如下内容:

<IfModule mod_proxy.c>

    #turning ProxyRequests on and allowing proxying from all may allow 
    #spammers to use your proxy to send email.

ProxyRequests Off

<Proxy *>
    Order deny,allow
    Deny from all
    #Allow from .your_domain.com
</Proxy>

为了避免spammer使用服务器发送垃圾邮件,proxy模块启用后默认是关闭所有访问的,真想不通反向代理怎么就能够发送垃圾邮件了,不过找到问题之后,解决方法就有了,就是修改这个/etc/apache/mods-avaliable/proxy.conf文件,把#Allow from .your_domain.com修改为Allow from 用户地址,虽然可以用211.24来代表一定ip范围的用户,还是麻烦,干脆Allow from all也是可以的。如果觉得修改这个文件麻烦,也可以在httpd.conf中写上类似代码:

<proxy>
    Order deny,allow
    Allow from all
</proxy>

参考:

  • [Apache2 ProxyPass experiences](http://ubuntuforums.org/showthread.php?t=39328)
  • [Apache’s ProxyPass on Ubuntu](http://serbiancafe.wordpress.com/2006/10/20/apaches-proxypass-on-ubuntu/)

Leave a Reply

Your email address will not be published. Required fields are marked *