Ale*_*x B 4 security reverse-proxy apache2 mod-proxy
最近,我发现我的网站运行速度越来越慢。我发现我的服务器上有 8GB Apache 日志(我在 Debian 6 服务器上运行 Play!Framework Web 应用程序),并且带宽完全超载。对于一个每天浏览量很少的小型个人网站来说,这完全是疯狂的。
经过调查和收集一些信息后,我发现了我的错误:在我的 Apache 配置中,我取消了“ProxyRequests On”行的注释,因此我的服务器可以免费用作世界上每个人的免费代理。真丢脸。
至少在那段时间,我调整了防火墙以限制并发连接,并为 Apache2 安装了 mod_qos。
但是,现在所有传入请求都将重定向到我的 Web 应用程序,无论域名是什么,而不是像良好的免费代理那样将请求重定向到目的地。例如,如果有人使用我的服务器,认为它仍然是一个有效的代理,在雅虎上搜索“年轻的裸体儿童”,他就会访问我的网站。我想现在你明白我的意思了。
那么,如果将“ http://yahoo.com/whatever ”的请求发送到我的服务器,我应该怎么做,该请求就会被拒绝?
这是我当前的配置:
在/etc/init.d/apache2/sites-available/mysite.fr中:
ProxyRequests Off
NameVirtualHost *:80
<VirtualHost *:80>
ServerName mysite.fr
ServerAlias *.mysite.fr
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:9000/ retry=0
ProxyPassReverse / http://127.0.0.1:9000
# Uncomment the line below if your site uses SSL.
#SSLProxyEngine On
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)在/etc/init.d/apache2/mods-available/proxy.conf中:
ProxyRequests Off
<Proxy *>
AddDefaultCharset off
Order deny,allow
Allow from all
</Proxy>
Run Code Online (Sandbox Code Playgroud)几个月前我找到了一个解决方案,然后才意识到我忘记分享我发现的内容:
我在 Apache2 配置中添加了一个“垃圾桶”虚拟主机(首先在 httpd.conf 中声明):
<VirtualHost *:80>
ServerName stop.spam
DocumentRoot /var/www/stopspam
ErrorLog /dev/null
<Directory /var/www/stopspam>
Deny from all
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
并将其添加到我的防火墙配置中:
iptables -I INPUT -d XXX.XXX.XXX.XXX -p tcp --dport 80 -m string --to 700 \
--algo bm --string 'Host: XXX.XXX.XXX.XXX' -j DROP
Run Code Online (Sandbox Code Playgroud)
这使得防火墙丢弃使用我的服务器 IP 而不是域名发送的端口 80 上的请求。
希望这可以帮助别人:)