在我的Rails生产网站上,我有时会得到一打左右的错误沿着行:
在#中出现了一个HTTP Controller::UnknownHttpMethod:
TRACK,可接受的HTTP方法有OPTIONS、GET、HEAD、POST、PUT、REPORT、TRACE、REPORT、PROPFIND、PROPPATCH、MKCOL、COPY、MOVE、REPORT、UNREPORT、UNREPORT、KOUT、KIN、UNREPORT、MKWORKSPACE、UPDATE、LABEL、MERGE、BASELINE-CONTROL、MKACTIVITY、ORDERPATCH、ACL、REPORT、MKCALENDAR和PATCH
我猜这是当机器人用Rails无法处理的HTTP方法攻击我的网站时(在我的情况下,它主要是OPENVAS,TRACK,DEBUG,TRACK和INDEX,但也有奇怪的方法,如WMIXLVXM)。
有没有办法让这些消息保持沉默?我仍然不确定这是Rails的问题还是Nginx的问题。
我使用自定义控制器向用户呈现自定义错误页面:
Rails.application.routes.draw do
%w(404 500).each do |status|
match status, :to => 'errors#show', :status => status, :via => :all
end
...
end
个字符
但我的自定义控制器可能不会导致错误?
谢谢你的帮助
3条答案
按热度按时间kupeojn61#
由于这些请求是你无论如何都不会处理的,所以更好的方法是在nginx级别限制https方法,这样这些方法就不会碰到rails:
字符串
q5iwbnjs2#
实际上,最让我烦恼的是当一个机器人用未知的HTTP方法访问我的网站时,我从Rails得到的Exception Notifications。(有时我会在几秒钟内收到十几封类似于
An ActionController::UnknownHttpMethod occurred in ...
的异常邮件。)所以在
production.rb
中我添加了一行:字符串
让我们看看它是如何工作的。我将在几周内发布更新。
qvsjd97n3#
你可以使用Rack Attack Gem修复它。首先在你的config/initializers中创建一个rack_attack.rb文件:
字符串
然后在application.rb文件中添加以下行:
型
这将有望修复该异常。