我有一个rails应用程序,用户可以上传文件(使用paperclip
)。当上传大文件时,用户被重定向到一个500错误页面,这只发生在远程;如预期的那样,用户在本地被重定向到新模型的视图。此外,尽管出现了错误页面重定向,模型及其关联文件还是成功地上传和创建了。
因为它只发生在大文件上,我怀疑这是由于请求超时,但我使用的puma
不强制这样的超时。
这是应用程序日志,puma日志没有显示任何异常。
D, DEBUG -- : SQL (0.4ms) INSERT INTO "posts" [...]
D, DEBUG -- : (0.9ms) COMMIT
D, DEBUG -- : (0.1ms) BEGIN
D, DEBUG -- : (0.1ms) COMMIT
I, INFO -- : Started GET "/500.html" for [...]
F, FATAL -- :
ActionController::RoutingError (No route matches [GET] "/500.html"):
actionpack (4.2.6) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
actionpack (4.2.6) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
railties (4.2.6) lib/rails/rack/logger.rb:38:in `call_app'
railties (4.2.6) lib/rails/rack/logger.rb:20:in `block in call'
activesupport (4.2.6) lib/active_support/tagged_logging.rb:68:in `block in tagged'
activesupport (4.2.6) lib/active_support/tagged_logging.rb:26:in `tagged'
activesupport (4.2.6) lib/active_support/tagged_logging.rb:68:in `tagged'
railties (4.2.6) lib/rails/rack/logger.rb:20:in `call'
actionpack (4.2.6) lib/action_dispatch/middleware/request_id.rb:21:in `call'
rack (1.6.4) lib/rack/methodoverride.rb:22:in `call'
rack (1.6.4) lib/rack/runtime.rb:18:in `call'
activesupport (4.2.6) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
rack (1.6.4) lib/rack/sendfile.rb:113:in `call'
railties (4.2.6) lib/rails/engine.rb:518:in `call'
railties (4.2.6) lib/rails/application.rb:165:in `call'
puma (3.6.0) lib/puma/configuration.rb:225:in `call'
puma (3.6.0) lib/puma/server.rb:578:in `handle_request'
puma (3.6.0) lib/puma/server.rb:415:in `process_client'
puma (3.6.0) lib/puma/server.rb:275:in `block in run'
puma (3.6.0) lib/puma/thread_pool.rb:116:in `block in spawn_thread'
我在nginx
日志中找到了答案:这确实是一个超时。在nginx.conf
中增加proxy_read_timeout
解决了这个问题(默认为60)。