gpt4 book ai didi

ruby - WEBrick 和 Sinatra : how to redirect all http traffic to https

转载 作者:数据小太阳 更新时间:2023-10-29 08:03:52 26 4
gpt4 key购买 nike

我尝试设置一个非常简单的 Sinatra 和 Webrick 服务器,使用自签名证书在 https 上工作。我想将所有 http 流量重定向到 https,这在这个设置中可行吗?

我有两个 Ruby 文件如下:

sinatra_ssl.rb

#sinatra_ssl.rb
require 'webrick/https'

module Sinatra
class Application
def self.run!
certificate_content = File.open(ssl_certificate).read
key_content = File.open(ssl_key).read

server_options = {
:Host => bind,
:Port => port,
:SSLEnable => true,
:SSLCertificate => OpenSSL::X509::Certificate.new(certificate_content),
:SSLPrivateKey => OpenSSL::PKey::RSA.new(key_content)
}

Rack::Handler::WEBrick.run self, server_options do |server|
[:INT, :TERM].each { |sig| trap(sig) { server.stop } }
server.threaded = settings.threaded if server.respond_to? :threaded=
set :running, true
end
end
end
end

编辑:增加了 rack/ssl 的要求myapp.rb

    #myapp.rb
require 'sinatra'
require 'path/to/sinatra_ssl'
require 'rack/ssl'

use Rack::SSL

set :server, 'WEBrick'
set :ssl_certificate, "path/to/server.crt"
set :ssl_key, "path/to/server.key"
set :port, 8443

get '/' do
'Hello World!'
end

目前,如果我访问 https://localhost:8443,我会收到 Hello World! 消息,但如果我访问 http://localhost:8443 我得到一个 ERR_EMPTY_RESPONSE,因为服务器没有它的路由。

有什么办法可以做这个重定向吗?

最佳答案

可以考虑使用中间件rack-ssl为了任务?如果那么试试这个:

require 'rack/ssl'
use Rack::SSL

关于ruby - WEBrick 和 Sinatra : how to redirect all http traffic to https,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27751240/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com