1

我在 Rails 2.3.2 上有一个小型应用程序,使用 nginx+thin(127)。操作系统 FreeBSD 7.1,数据库 - Posgresql。

Twise 在这周我的应用程序已经下降。在日志中,我得到类似(每秒约 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 无法建立新连接并且应用程序失败。

任何建议,我如何保护我的sspp在这种情况下?

4

1 回答 1

6

引用自 rails 2.3 发行说明:

Rails 检查 IP 欺骗这一事实对于使用手机进行大量流量的网站来说可能是一个麻烦,因为它们的代理通常不会正确设置。如果是您,您现在可以设置 ActionController::Base.ip_spoofing_check = false 以完全禁用检查。

于 2010-12-08T21:23:21.957 回答