- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想让我的 API Controller 使用 SSL,所以我在我的 nginx.conf 中添加了另一个 listen 指令
upstream unicorn {
server unix:/tmp/unicorn.foo.sock fail_timeout=0;
}
server {
listen 80 default deferred;
listen 443 ssl default;
ssl_certificate /etc/ssl/certs/foo.crt;
ssl_certificate_key /etc/ssl/private/foo.key;
server_name foo;
root /var/apps/foo/current/public;
try_files $uri/system/maintenance.html $uri/index.html $uri @unicorn;
location @unicorn {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://unicorn;
}
error_page 502 503 /maintenance.html;
error_page 500 504 /500.html;
keepalive_timeout 5;
}
它毫无问题地通过了 nginx conftest。我还在我的 ApiController 中添加了一个 force_ssl
指令
class ApiController < ApplicationController
force_ssl if Rails.env.production?
def auth
user = User.authenticate(params[:username], params[:password])
respond_to do |format|
format.json do
if user
user.generate_api_key! unless user.api_key.present?
render json: { key: user.api_key }
else
render json: { error: 401 }, status: 401
end
end
end
end
def check
user = User.find_by_api_key(params[:api_key])
respond_to do |format|
format.json do
if user
render json: { status: 'ok' }
else
render json: { status: 'failure' }, status: 401
end
end
end
end
end
当我不使用 SSL 时它工作得很好,但现在当我尝试 curl --LI http://foo/api/auth.json
时,我被正确地重定向到 https
,但随后我继续被重定向到 http://foo/api/auth
,以无限重定向循环结束。
我的路线只有
get "api/auth"
get "api/check"
我在 Ruby 1.9.2 和 nginx 0.7.65 上使用 Rails 3.2.1
最佳答案
您不会转发有关此请求是否为 HTTPS 终止请求的任何信息。通常,在服务器中,“ssl on;”指令将设置这些 header ,但您使用的是组合 block 。
Rack(和 force_ssl)通过以下方式确定 SSL:
参见 the force_ssl source完整的故事。
由于您使用的是组合 block ,因此您想使用第三种形式。尝试:
proxy_set_header X-Forwarded-Proto $scheme;
在您的服务器或位置 block 中 per the nginx documentation .
这会在您收到端口 80 请求时将 header 设置为“http”,并在您收到 443 请求时将其设置为“https”。
关于ruby-on-rails - 为什么我的 Rails 应用程序中会出现使用 force_ssl 的无限重定向循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9448168/
rails 3.1.3 有了 force_ssl,我一遍又一遍地得到这个重定向,它永远不会结束。我要去 https 网址,所以我不确定为什么它会提示。想法? Started GET "/app/adm
我有以下路线: resources :widgets do resources :orders end 所以一个请求,例如至/widgets/1/orders/new转到 OrderControl
测试 Rails 4. 在 Rails 3 中,将 force_ssl 放在我的 Controller 顶部,强制 ssl 仅用于生产。这在开发中被忽略,这是我想要的行为,并且符合 force_ssl
我正在运行 Rails 3.1 并尝试将上面的行放在 development.rb 和 application.rb 中(不是同时),但它似乎没有做任何事情。我的请求仍在 HTTP 上运行。这不是要强
我正在将一个应用程序迁移到 heroku,但在 ssl 和重定向方面遇到了一些问题。 我在 Rails 3.1 上,我尝试在环境 production.rb 中使用中间件强制使用 ssl。我都试过将它
在之前的question我发现我应该设置 nginx ssl 终止,而不是让 Rails 处理加密数据。 那为什么会出现下面的情况呢? config.force_ssl = true 我看到这在生产配
rails 3.1 中的 force_ssl 函数被硬编码为忽略开发环境,而不是测试。这在我的(最小测试)测试中给了我重定向错误。是设置我的测试服务器以支持 ssl 的解决方案(如果是,如何?)。如果
如果我将它放在 config/environments/production.rb 中,我的站点将全部变为使用 301 重定向(永久)的 SSL。 config.force_ssl = true 如何
我正在尝试让 force_ssl 工作。我的意思是我想将尝试通过应用程序本身通过 http 连接到 https 的人重定向。 该应用程序是基于 Nginx 的 dockerized 发布版本。实际上
我想让我的 API Controller 使用 SSL,所以我在我的 nginx.conf 中添加了另一个 listen 指令 upstream unicorn { server unix:/tm
我想在除我的着陆页之外的所有路由上强制执行 SSL。我尝试在我所有的 Controller 中设置 force_ssl,对于包含 root 的 Controller ,我做了: force_ssl :
我有一个 Rails 3.2.13 应用程序,我正在尝试为 Nginx 和 Unicorn 配置 SSL。我希望能够将某些 Controller 和某些 Controller 操作告知“force_s
我在 config/application.rb 中发现 config.force_ssl = false,尽管该域具有 SSL 证书,但它没有被定义为 true。将其设置为 false 是否有任何特
我正在运行一个 Rails 3.1.4 应用程序,它需要一些页面使用 force_ssl,但我不想让其他页面使用 SSL。是否有与 force_ssl 相反的东西,例如 force_http?问题是我
场景 我正在通过 nginx 运行 Phusion Passenger。 我已将 nginx 配置为使用 SSL 并将所有 HTTP 流量重新路由到 HTTPS。 我是否仍需要在我的 Rails 应用
看完this ,听起来 config.force_ssl = true 应该是默认值,为什么 Rails 团队在创建新应用程序时没有将其设为默认值(在 config/environments/prod
我正在开发一个 Rails 3.1.0 应用程序,它需要根据用户在某些页面中使用 ssl。 我在 config/enviroments/staging.rb 中将 config.force_ssl 设
除了 message#new Controller 之外,我需要在我的应用程序中的所有路由上强制使用 SSL。 在 config/environments/production.rb 中,我有: co
在我的 production.rb 中,我有 config.force_ssl = true 并希望提供异常(exception)。看起来这应该有效(找不到如何回到 3.2.19): class
2 月底,Shopify 将 force_SSL 选项设置为 true(即使对于开发商店),这对我来说是个问题,因为我在本地(使用本地主机)开发 Shopify 应用程序,而我的计算机没有 SSL证书
我是一名优秀的程序员,十分优秀!