タグ: mod_rewrite を抽出しています。
Total: 2

検索ロボットからの負荷を下げる

ブログ | 2010/5/5 07:27
検索ロボットのせいにしてみる。

mod_rewriteにて、
RewriteCond %{HTTP_USER_AGENT} (Baiduspider|BaiduMobaider) [NC]
RewriteRule ^.*$ - [F]
   
RewriteCond %{HTTP_USER_AGENT} (Googlebot/|Slurp/|msnbot/|Yeti/) [NC]
RewriteCond %{QUERY_STRING} &?(key|tag|sort|icon|star|pro|cbll|d)=.+ [OR]
RewriteCond %{REQUEST_URI} ^/(m|i)/
RewriteRule ^.*$ - [F]

方針
  • Baiduはいいや。
  • DBに負荷のかかる、検索や抽出の含まれるクエリー付きは拒否。
  • モバイルやiPhoneは、「Googlebot-Mobile」くらいが来てくれればいいんじゃないか。

ログでアクセス拒否の403を拾ってみると、postだけでも1分間に120もある。
tail -n 10000 access_log | grep 403

きっと、負荷は下がるに違いない。

mod_proxy_balancerメモ2 (mod_rewrite編)

ブログ | 2009/12/5 18:34
mod_proxy_balancerメモ
http://www.rottel.net/kuwa/55971
の続編です。

前回は、mod_rewriteは挫折して、ProxyPassだけでやったのだけれど、時間置いて順を追って考えたらできたみたい。

とにかく、僕の場合は、mod_rewriteでこういうことをするのをベースにしているので、
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
この時のmod_proxy_balancer

<VirtualHost *:80>
 DocumentRoot "/Users/xxxxx/xxxxx/xxxxx/xxxxx"
 ServerName www.rottel.net
 ServerAlias rottel.net
 ErrorLog "/var/log/apache2/rottel_error_log"
 LogLevel emerg
 CustomLog "/var/log/apache2/rottel_access_log" combined
 
 # ----- balancer-managerで分散状況を確認したいなら ------
 ProxyPass /balancer-manager !
 <Location /balancer-manager>
   SetHandler balancer-manager
   order deny,allow
   deny from all
   allow from xxx.xxx.x
 </Location>
 
 # ----- balancerの設定 ------
 ProxyRequests Off
 ProxyPreserveHost On
 <Proxy balancer://cluster/>
   BalancerMember http://127.0.0.1:8001 loadfactor=10 route=11
   BalancerMember http://xxx.xxx.x.8 loadfactor=20 route=8 redirect=11
   BalancerMember http://xxx.xxx.x.7 loadfactor=20 route=7 redirect=11
   BalancerMember http://xxx.xxx.x.6 loadfactor=20 route=6 redirect=11
   ProxySet lbmethod=byrequests
   ProxySet stickysession=BALSESSID|balsessid
   ProxySet nofailover=On
   ProxySet timeout=1
   ProxySet maxattempts=1
 </Proxy>

 <Directory "/Users/xxxxx/xxxxx/xxxxx/xxxxx">
   AllowOverride None
   RewriteEngine on
   RewriteBase /
   
   # ----- wwwなしをwwwつきに ------
   RewriteCond %{HTTP_HOST} ^rottel.net$ [NC]
   RewriteRule ^(.*) http://www.rottel.net/$1 [L,R=301]
   
   # -----------
   #ファイル・ディレクトリとして存在する、balancer-managerなら何もしない
   # -----------
   RewriteCond %{REQUEST_FILENAME} -f [OR]
   RewriteCond %{REQUEST_FILENAME} -d [OR]
   RewriteCond %{REQUEST_URI} ^/balancer-manager
   RewriteRule ^(.*) - [L]
   
   # ----- /ならbalancerへ(DirectoryIndex index.htmlなので) -----
   RewriteCond %{REQUEST_URI} ^/index.html
   RewriteRule ^(.*)$ balancer://cluster/index.php [P,L,QSA]
   
   # ----- /imgやuploaderなど以外をbalancerへ ------
   RewriteCond %{REQUEST_URI} !^/(img$|uploader$|swfupload$|ajax_m$|setting$|setting/.*)
   RewriteRule ^(.*)$ balancer://cluster/index.php?q=$1 [P,L,QSA]
   RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
 </Directory>
</VirtualHost>

Pは、ProxyのPらしい。
Lは、そこで処理が止まるらしい。
QSAは、クエリーをそのまま引き渡すらしい。
[OR]をつけないと[AND]らしい。
前 | 1 | 次

Rottel内コンテンツ

ユーザー一覧

Rottelとは?
利用規約
開発飲料
利用者の声
ヘルプ
close