1

Rails 2.3.2に小さなアプリケーションがあり、nginx + thin(127)で提供されています。OS FreeBSD 7.1、DB-Posgresql。

今週のTwiseで私のアプリは落ちました。ログに次のようなものが表示されます(1秒あたり約2〜50リクエスト):

/!\ FAILSAFE /!\  Mon Oct 04 20:13:55 +0300 2010
 Status: 500 Internal Server Error
  bad content body
   /usr/home/../../history/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/utils.rb:311:in `parse_multipart'
   /usr/home/../../history/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/request.rb:125:in `POST'
   /usr/home/../../history/vendor/rails/actionpack/lib/action_controller/request.rb:428:in `request_parameters'
   /usr/home/../../history/vendor/rails/actionpack/lib/action_controller/request.rb:381:in `parameters'
   /usr/home/../../history/vendor/rails/actionpack/lib/action_controller/base.rb:1279:in `assign_shortcuts'
   /usr/home/../../history/vendor/rails/actionpack/lib/action_controller/base.rb:518:in `process_without_filters'

または:

/!\ FAILSAFE /!\ Tue Nov 09 09:24:39 +0200 2010ステータス:500内部サーバーエラーIPスプーフィング攻撃?!HTTP_CLIENT_IP = "XX.XX.XX.XX" HTTP_X_FORWARDED_FOR = "192.168.XX.XX、YY.YY.YY.YY"

/usr/home/../../history/vendor/rails/actionpack/lib/action_controller/request.rb:229:in `remote_ip'
/usr/home/../../history/vendor/rails/actionpack/lib/action_controller/base.rb:1372:in `request_origin'
/usr/home/../../history/vendor/rails/actionpack/lib/action_controller/base.rb:1304:in `log_processing_for_request_id'
/usr/home/../../history/vendor/rails/actionpack/lib/action_controller/base.rb:1296:in `log_processing'
/usr/home/../../history/vendor/rails/actionpack/lib/action_controller/base.rb:522:in `process_without_filters'

そのシステムが最大オープンファイル制限に達した後(postgesqlセッションで開くと思います)、postgresqlは新しい接続を確立できず、アプリがフォールします。

どんな提案でも、どうすれば自分を守ることができますかssこの状況でpp?

4

1 に答える 1

6

Rails 2.3リリースノートから引用:

RailsがIPスプーフィングをチェックするという事実は、携帯電話で大量のトラフィックを処理するサイトにとっては厄介なものになる可能性があります。これは、プロキシが一般的に正しく設定されていないためです。それがあなたなら、ActionController :: Base.ip_spoofing_check = falseを設定して、チェックを完全に無効にすることができます。

于 2010-12-08T21:23:21.957 に答える