자체 서명 된 인증서로 https를 통해 작동하는 매우 간단한 Sinatra 및 Webrick 서버를 설정하려고했습니다. 모든 HTTP 트래픽을 https로 리디렉션하고 싶습니다.이 설정에서 가능합니까?WEBrick & Sinatra : 모든 http 트래픽을 https로 리디렉션하는 방법
나는 두 개의 루비 아래와 같은 파일이 있습니다
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
편집 : myapp.rb 랙/SSL의 추가 요구 사항
#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
이 표시됩니다.
이 리디렉션을 수행 할 방법이 있습니까?
어떻게 응용 프로그램을 배포 할 지 모르겠지만 대개 nginx와 같은 역방향 프록시 뒤에 배포하고 HTTP 트래픽을 https로 쉽게 리디렉션 할 수 있습니다 –
@ Sirl33tname 감사합니다. 지금 당장 WEBricks로 가능한지 궁금합니다. – Aly