В Ruby есть встроенный сервер WEBrick. У него есть довольно богатый функционал, но юзать его не рекомендуют (как минимум из-за отсутствия документации и однопоточности). Для целей production могут использоваться другие ruby-сервера: puma, unicorn, rainbows; но по факту лучше использовать nginx :).
WEBrick::HTTPAuth WEBrick::HTTPAuth::Authenticator WEBrick::HTTPAuth::BasicAuth WEBrick::HTTPAuth::DigestAuth WEBrick::HTTPAuth::Htdigest WEBrick::HTTPAuth::Htgroup WEBrick::HTTPAuth::Htpasswd WEBrick::HTTPAuth::ProxyAuthenticator WEBrick::HTTPAuth::ProxyBasicAuth WEBrick::HTTPAuth::ProxyDigestAuth WEBrick::HTTPAuth::UserDB WEBrick::Cookie
Поднимаем простой http сервер. Взято прямо из wiki и rubydoc.
#Include WEBrick class with require
require 'webrick'
#FileHandler servlet provides the option to choose which files from user to serve
#The following code shows how to serve them from the folder '~/'
root = File.expand_path '~/'
#Instantiating a new server with HTTPServer.new on port 1234 serving the documents from root folder
server = WEBrick::HTTPServer.new :Port => 1234, :DocumentRoot => root
#The following proc is used to customize the server operations
server.mount_proc '/' do |request, response|
response.body = 'Hello, world!'
end
#The following command will provide a hook to shutdown the server (often done with Ctrl+C)
trap('INT') {server.shutdown}
#Start the server
server.start
Поднимаем https сервер с заданным сертификатом.
#!/usr/bin/env ruby
#coding: utf-8
# Created by Petr V. Redkin
#Include WEBrick class with require
require 'webrick'
require 'webrick/https'
require 'openssl'
#FileHandler servlet provides the option to choose which files from user to serve
#The following code shows how to serve them from the folder '~/'
root = File.expand_path '~/'
#Instantiating a new server with HTTPServer.new on port 1234 serving the documents from root folder
cert = OpenSSL::X509::Certificate.new File.read '/etc/letsencrypt/live/my_site.net/cert.pem'
pkey = OpenSSL::PKey::RSA.new File.read '/etc/letsencrypt/live/my_site.net/privkey.pem'
server = WEBrick::HTTPServer.new(:Port => 1234,
:SSLEnable => true,
:SSLCertificate => cert,
:SSLPrivateKey => pkey)
#The following proc is used to customize the server operations
server.mount_proc '/' do |request, response|
response.body = 'Hello, world!'
end
#The following command will provide a hook to shutdown the server (often done with Ctrl+C)
trap('INT') {server.shutdown}
#Start the server
server.start
