有许多网友跟我反应,架了 R-Proxy Server 后, Web 主机让外人当成 Public Proxy Server 存取,造成网络流量的突增及管理上的问题.
我找了很多的文章及讨论,用人说改用 Apache 2 的 ProxyMatch 方式,或是用 Rewrite Rules 去限制,
不过似乎都没办法彻底解决这个问题.有一天,我不小心才看到下面 Apache mod_proxy 网站上的一段文字:
Warning: Do not enable proxying with ProxyRequests until you have secured your server.
Open proxy servers are dangerous both to your network and to the Internet at large.
意思是大概说,假如你无法保护你的主机的安全性,那请不要把 ProxyRequests 功能打开,不然可能会影响你网络的频宽及安全.
于是我找了一台 FreeBSD 4.7p3 及 Apache 1.3.27 来测试,发现其实只需要下面这几行就可以达到
R-Proxy 的功能:
ProxyPass /webmail http://192.168.1.2/webmail/
ProxyPassReverse /webmail http://192.168.1.2/webmail/
然后确认下面这几行前面加上 # 以取消 ProxyRequests 的功能:
#ProxyRequests On
#
# Order deny,allow
# Deny from all
# Allow from .your_domain.com
#
因为 mod_proxy 还是有加载,所以 ProxyPass 的功能还是存在,只是没有 ProxyRequests 的功能,
而且也就没有 Cache 的支持,不过,安全性才是首要考量的,至于 R-Proxy 跟 Firewall 间的整合性问题,
可以参考下面参考资料中的第二篇文章.
参考资料:
1.Apache - module mod_proxy
http://httpd.apache.org/docs/mod/mod_proxy.html
2.A Reverse Proxy Is A Proxy By Any Other Name
http://www.sans.org/rr/web/reverse_proxy.php
第四单元: apache 2.0.43 reverse proxy的安装方式
(本单元由 kefore 网友热情提供分享)
tall ball的位置:
http://apache.oregonstate.edu/httpd/httpd-2.0.43.tar.gz
主要功能:
替 Internet 的使用者代理存取内部受限制的网站
安装步骤:
Step 1.
wget http://apache.oregonstate.edu/httpd/httpd-2.0.43.tar.gz
Step 2.
tar -zvxf httpd-2.0.43.tar.gz
Step 3.
cd httpd-2.0.43
Step 4.
##激活proxy模块及安装于/usr/local/apache2
./configure --prefix="/usr/local/apache2" --enable-proxy=shared
Step 5.
make;make install
Step 6.
##修改httpd.conf檔
vi /usr/local/apache2/httpd/httpd.conf
在里面加W或把某几行的#拿掉
##别忘了这一行,不然您的网页default charset将会是ISO-8859-1
AddDefaultCharset Big5
LoadModule proxy_module /usr/local/apache2/modules/mod_proxy.so
LoadModule proxy_connect_module /usr/local/apache2/modules/mod_proxy_connect.so
LoadModule proxy_http_module /usr/local/apache2/modules/mod_proxy_http.so
ProxyPass / http://192.168.2.5/
ProxyPassReverse / http://192.168.2.5/
Step 7.
#激活apache
/usr/local/apache2/httpd -f ./conf/httpd.conf -k start