几天前出差,在某酒店上网,发现除80外,所有的端口都给屏蔽了。这可麻烦了,很多事情都做不了,后来,只能先从网上找了一个临时代理,然后通过VPN绕过网关,速度慢些,但起码可用吧。回来就马上搭建一个本地的代理服务器,为减轻服务器的负载,不想再多开端口,先试试Apache吧。
我要实现的功能很简单,就是一个正向代理,并可允许通过VPN链接即可:
一、平台
操作系统:红旗DC Server 5.0 SP2
应用平台:Apache 2.0
httpd-2.0.52-28.ent.redflag
httpd-suexec-2.0.52-28.ent.redflag
二、配置
修改/etc/httpd/conf/httpd.conf文件,去掉原来的"#"号,或直接增加:
ProxyRequests On
<Proxy 192.168.228.1:80>
Order deny,allow
Deny from 192.168.1.*
Allow from all
</Proxy>
<IfModule mod_disk_cache.c>
CacheEnable disk /
CacheRoot "/var/cache/mod_proxy"
</IfModule>
</IfModule>
AllowCONNECT 1194
可以看到,配置非常简单,而且不会影响原来的Vhost设置。需要注意的地方是,若要该代理转发非80端口的数据,必须在Global配置下,增加AllowCONNECT配置,并指定允许的端口,例如OpenVPN默认的1194。
三、反向代理
反向代理,通常就是把一个内网Web服务器通过代理公布到外部,对于Apache来说,可以理解为映射。我没有使用这个配置,只作为说明:
#反向代理,是不需要打开ProxyRequests的
<Proxy ip:80>
Order deny allow
Allow from all
</Proxy>
然后在<virtualhost>配置段下增加:
ProxyPassReverse /mirror http://www.baidu.com/
这样,当访问virtualhost配置的虚拟主机下的mirror目录,即可自动从百度读取。当然,把百度的地址改为内网地址,就可发布内网网站咯。
※补充说明:
举例:我对外只有一台web服务器,但我内网还有一台web服务器提供另外的服务。现在我想把这台服务器也发布到外网上,该如何设置呢?
回复:因为IP只有一个,80端口已经给占用了,所以,应该设置如下的反向代理即可:
首先,建立一个空目录:
chown apache.apache /var/www/html/mail
然后,修改配置文件,增加:
ServerAdmin linuxing@mail.linuxfly.org
DocumentRoot /var/www/html/mail/
ServerName mail.linuxfly.org
ErrorLog logs/mail.linuxfly.org_log
CustomLog logs/mail.linuxfly.org_log common
ProxyPass / http://192.168.228.110/
ProxyPassReverse / http://192.168.228.110/
</VirtualHost>
重启Apache服务器即可。以后访问http://mail.linuxfly.org,即会自动转到内网的192.168.228.110的web服务上。
四、用户认证
本来,我是想给正向代理配置一个用户认证的,但就是不成功,似乎Apache只能做到基于目录的认证,请有经验的朋友指教?
以下是《Apache经典实例》中的配置,是基于Apache 1.0的。
先用htpasswd生成用户名和密码文件:
然后会提示输入两次密码。
修改密码是:
新增加用户是:
接下来是配置
<Directory "proxy:http://127.0.0.1:8080/">
AuthName SecretServer
AuthType Basic
AuthUserFile /etc/httpd/conf/password
Require valid-user
</Directory>
上述截选自英文版O'Reilly -《 Apache Cookbook》- 2003的Recipe 10.8 Requiring Authentication for a Proxied Server。
※Apache 2.2中关于mod_proxy模块的中文说明:点击
Apache中虚拟主机设置泛域名解析
[转]Apache的Satisfy详解
Subversion 安全点滴
使用mod_dav_svn访问Subversion仓库
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/113034.html