2

Rails 3.2.x用に更新されたここのガイダンスに従って、https://プレフィックスが含まれている場合にのみSSLフィルターを使用するようにRack::SSLを構成できると期待していました。

config.force_ssl = true
config.ssl_options = { :exclude => proc { |env| puts 'here? ' + env.to_s; env['HTTPS'] != 'on' } }

ただし、https動作httpし、次のエラーで失敗します。

[2012-10-29 15:37:03] ERROR OpenSSL::SSL::SSLError: SSL_accept returned=1 errno=0 state=SSLv2/v3 read client hello A: http request
    /Users/user/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/openssl/ssl-internal.rb:164:in `accept'

ラムダに挿入された診断コードは実行されません。HTTPとHTTPSの両方に応答するようにRails3.2.xでRack:SSLを構成するにはどうすればよいですか?

Rails 3.2.8、自己署名証明書を使用してSSL用に構成されたWEBrick。

4

3 に答える 3

2

excludeハッシュでオプションを使用する機能はoptions、何らかの理由で2012年5月に削除されました: https ://github.com/rails/rails/pull/5515

私が見たエラーは赤いニシンでした。はexclude無視され、http://リクエストはActionDispatch::SSLでにリダイレクトされていましたhttps://。その後、プロトコルの不一致が原因でOpenSSLが窒息していました(私は推測します)。

解決策は、ここでrack-ssl提案されているように、gemを使用することです。これは、オプションが引き続き尊重されることを除いて、ActionDispatch::SSLと基本的に同じです。exclude

于 2012-11-30T23:13:40.740 に答える
2

と同様のアプローチは、次のように構成されたrack-ssl-enforcerrack-sslを使用することです。

# config/environments/production.rb
config.middleware.use Rack::SslEnforcer, :except => ['/heatlh_check', %r{^/public/}]
于 2013-12-23T20:36:07.143 に答える
0

configsなどと格闘して数日後、私はこの素晴らしい宝石を見つけました:

https://github.com/lserman/aws-healthcheck

カスタムnginxセットアップは必要ありません(ラックを介して機能します)。200チャームのように機能する/healthcheckに戻ります。宝石に追加するだけで完了です。

于 2017-03-24T20:58:46.157 に答える