4

最近、自分のウェブサイトの実行速度がますます遅くなることに気付きました。サーバーで 8 GB の Apache ログ (Debian 6 サーバーで Play!Framework Web アプリケーションを実行しています) と帯域幅が完全に過負荷になっていることを発見しました。これは、1 日に数回のビューしかない小規模な個人 Web サイトにとってはまったく正気ではありませんでした。

調査していくつかの情報を収集した後、私は自分の間違いを発見しました.Apacheの設定で、「ProxyRequests On」という行のコメントを外していたので、私のサーバーは世界中の誰にとっても無料のプロキシとして自由に使用されていました. 残念だ。

少なくともその間、ファイアウォールを調整して同時接続を制限し、Apache2 用に mod_qos をインストールしました。

それでも、優れた無料のプロキシのようにリクエストを宛先にリダイレクトする代わりに、ドメインが何であれ、すべての着信リクエストが私の Web アプリケーションにリダイレクトされます。たとえば、誰かが私のサーバーを使用して、yahoo で「若い裸の子供」を検索するためのプロキシがまだ機能していると考えている場合、彼は私の 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>
    
  • /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

これにより、ファイアウォールは、ドメイン名の代わりにサーバー IP を使用して送信されるポート 80 で要求をドロップします。

これが他の誰かを助けることを願っています:)

于 2013-03-06T15:56:45.700 に答える