4

最近,我注意到我的网站运行速度越来越慢。我在我的服务器上发现了 8GB 的​​ Apache 日志(我在 Debian 6 服务器上运行 Play!Framework Web 应用程序)并且带宽完全超载。对于一个每天只有几次浏览量的小型个人网站来说,这完全是疯狂的。

在调查和收集了一些信息后,我发现了我的错误:在我的 Apache 配置中,我取消了“ProxyRequests On”行的注释,因此我的服务器被免费用作世界上每个人的免费代理。真可惜。

至少在那个时候,我调整了我的防火墙以限制并发连接,并为 Apache2 安装了 mod_qos。

但是,现在不是像一个好的免费代理那样将请求重定向到它们的目的地,而是所有传入的请求都被重定向到我的 Web 应用程序,无论域是什么。例如,如果有人使用我的服务器,认为它仍然是在 yahoo 上搜索“年轻的裸体儿童”的有效代理,他就会访问我的网站。我想现在你明白我的意思了。

那么,如果对“ 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>
    
  • /etc/init.d/apache2/mods-available/proxy.conf

    ProxyRequests Off
    <Proxy *>
    
        AddDefaultCharset off
        Order deny,allow
        Allow from all
    </Proxy>
    
4

1 回答 1

4

几个月前我找到了一个解决方案,只是意识到我忘了分享我发现的内容:

我在我的 Apache2 配置中添加了一个“垃圾桶”虚拟主机(首先在 httpd.conf 中声明):

<VirtualHost *:80>
    ServerName stop.spam
    DocumentRoot /var/www/stopspam
    ErrorLog /dev/null
    <Directory /var/www/stopspam>
        Deny from all
    </Directory>
</VirtualHost>

并将其添加到我的防火墙配置中:

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

这使得防火墙丢弃端口 80 上的请求,这些请求使用我的服务器 IP 而不是域名发送。

希望这可以帮助别人:)

于 2013-03-06T15:56:45.700 回答