Rails authenticate_or_request_with_http_basic不适用于SSL + Nginx

问题描述

| 我已经在我的Rails 3应用程序中执行了一项操作,该操作由authenticate_or_request_with_http_basic进行了密码保护。在我的开发机器上可以正常工作,但是不会在生产服务器上提示输入http_basic用户名/密码。 整个生产应用程序在Nginx上通过https / SSL运行。 我在哪里寻找解决方案? http基本身份验证是否不能通过SSL工作?还是我需要查看一个Nginx设置? TIA     

解决方法

不知道这是否与Rails 3有关。 我最近在运行Mongrel 1.1.5和Rails 2.3.8时遇到问题 显然,此设置中存在一个错误,即我们的生产机器不提示输入用户名和密码(但可以在本地运行,因为我们使用的是Web-brick)。 在mongrel.log中,我们不断收到此错误: 调用Dispatcher.dispatch #split \'时发生错误,要求为nil :NilClass> /usr/local/rvm/gems/ruby-1.8.7-p174/gems/actionpack-2.3.8/lib/action_controller/cgi_process.rb:52:indispatch_cgi \' /usr/local/rvm/gems/ruby-1.8.7-p174/gems/actionpack-2.3.8/lib/action_controller/dispatcher.rb:101:位于`dispatch_cgi \'中 ... 找到修复此Mongrel 1.1.5和Rails 2.3.8所需的猴子补丁,它对我有用。 导致该解决方案的德语站点:http://railssprech.de/,带有2个链接,分别指向2.3.8和2.3.9。 这是2.3.8版本:http://www.pcoder.net/error-calling-dispatcher-dispatch/#axzz1RknBQso2 该补丁说明了为什么发生此错误。检查Rails 3 CGIHandler.dispatch_cgi方法并查看是否存在相同的错误。您可能需要提取Rails 3并对其进行猴子修补。 希望这可以帮助。 顺便说一句:Mongrel 1.1.5和Rails 2.3.5都可以使用!