如何为独立的 Sinatra 应用程序启用 SSL?

2024-02-06

我想在 Sinatra 中编写一个快速的服务器应用程序。它必须是独立的(即不使用 apache/nginx/passenger),但也必须支持 SSL。

有没有一种简单的方法来启用 Sinatra 的 SSL 支持(例如使用 WEBRick)?


要使用 MRI ruby​​ 执行此操作,请使用以下猴子补丁:

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

然后,在您的独立应用程序中:

app.rb

require 'sinatra'
require 'sinatra_ssl'

set :port, 8443
set :ssl_certificate, "server.crt"
set :ssl_key, "server.key"

get "/" do
  "Hello world!"
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为独立的 Sinatra 应用程序启用 SSL? 的相关文章

  • NGINX 上的 SSL 终止

    我已经购买了 SSL 证书 并在验证模数时正确地将其捆绑在一起 即https kb wisc edu middleware 4064 https kb wisc edu middleware 4064 那么哈希值是相同的 我已将证书和密钥移
  • 使用 Ruby on Rails 进行设计 - 强制用户在首次登录时更改密码

    我有一个运行 Devise 的 RoR 应用程序 Rails 4 2 Ruby 2 2 0 我已经进行了设置 以便管理员用户 标识了我添加到用户模型中的 is admin 布尔值 能够创建新的用户帐户 为他们提供生成的密码和确认电子邮件 这
  • 什么是“太聪明”的 Ruby 代码示例? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在与一些程序员朋友进行讨论 他们说他们看到 Ruby 程序员 尤其是 编写了很多 太聪明 的代码 所以我想知道那会是什么样子 我指
  • 如何在 Ruby 中列出局部变量?

    def method a 3 b 4 some method that gives a b end 局部变量 http ruby doc org core Kernel html method i local variables 它输出符号
  • GitHub API:标记提交所属(与 git describe --tag 并行)

    我正在使用 GitHub API 进行实验octokit https github com octokit octokit rb红宝石 我的目标是能够提取提交 SHA 所属的 标签 现在我可以使用命令行轻松地执行此操作 gt git des
  • 为什么这个 Ruby 方法返回“空值表达式”错误?

    我有这个简单的方法 def is palindrome sentence raise ArgumentError new expected string unless sentence is a String safe sentence s
  • 在 Ruby 中跨多个类实例记忆数据的好方法是什么?

    考虑 生成数据的对象的许多实例 如果每次运行只生成一次该数据 那就太好了 class HighOfNPeriods lt Indicator def generate data indicator data DataStream new 0
  • Mongoid - 同一外域的两个域的逆

    我试图让以下 Mongoid 关系发挥作用 但每个团队的游戏字段都是一个空数组 这不是一个有效的关系模型吗 我是否需要分开比赛 即主场比赛和客场比赛 class Team include Mongoid Document has many
  • SSL如何使用对称和非对称加密?如何管理一台主机上多个站点的认证? [复制]

    这个问题在这里已经有答案了 首先 引用微软TechNet的一些内容管理 Microsoft 证书服务和 SSL http technet microsoft com en us library bb727098 aspx 回顾一下 安全 S
  • Ruby 中多维数组的帮助

    我有以下代码将字符串拆分为 3 个字节的组 str hello ix 0 iy 0 bytes tby str each byte do c if iy 3 iy 0 bytes ix tby each index do i bytes i
  • Rails 4 - 如何链接到 PDF 文件(名称.PDF)?

    我正在生成 PDF 文件 我的链接如下所示 当我点击这个时 它会带我去 display invoice 123456789 这是一个 HTML 版本 在控制器中的操作如下 def display invoice if params invo
  • Rails 中的 PDF 导出

    我需要将包含一些图表的 HTML 页面导出为 PDF 有哪些好的 gem 可以做到这一点 PDFKit http railscasts com episodes 220 pdfkit http railscasts com episodes
  • 可以覆盖/实现的 ruby​​ 运算符列表

    是否有可以覆盖的所有 ruby 运算符的列表 不是那些不能的 Here s Ruby 运算符表 http phrogz net programmingruby language html table 18 4 方法和可重载的有 Elemen
  • 有没有人有 Ruby 和 Rake 的 Notepad++ 函数列表插件的解析规则

    我使用 Notepad 编辑 rake 文件 并且希望能够使用函数列表插件 我无法在线找到任何解析规则 并且 语言解析规则 对话框没有非常清晰的记录 我正在将方法解析到以下列表中 但还想显示任务 Function Begin t def t
  • 如何向 Time.now 添加两周?

    如何在 Ruby 中向当前 Time now 添加两周 我有一个使用 DataMapper 的小型 Sinatra 项目 在保存之前 我有一个字段填充了当前时间加上两周 但未按需要工作 任何帮助是极大的赞赏 我收到以下错误 NoMethod
  • 如何计算带有偏移量的异或?

    我想用不同的偏移量进行异或计算以在计算中列出 例子 key 0 1 0 text 0 1 0 1 0 1 0 1 1 1 异或计算 key 0 text 0 key 1 text 1 key 2 text 2 key 0 text 3 ke
  • 如何使用本地安装的gems执行Ruby程序?

    我已经使用安装了我的依赖项 bundle package 然后将它们传输到离线服务器并运行 gt bundle install local Using mime types 1 19 Using rest client 1 6 7 Usin
  • Rails 3 在 Ruby 1.9.2 上初始化非常慢

    我使用 RVM 来管理环境 安装了 Ruby 1 9 2 p136 我认为是最新版本 和 Rails 3 创建了 gemset 并运行捆绑器 到目前为止一切正常 但 Rails 在运行命令 即生成 销毁 rake 等 时初始化速度非常慢 完
  • Rails/Nginx 中的超时——最佳实践

    我正在开发一个应该在 Nginx 服务器上运行的 Rails 应用程序 根据输入 应用程序可能需要很长时间来处理请求 或者在出现错误时挂起 因此我想防止进程永远运行 除了确保客户端收到超时信号的 Nginx 配置之外 我想我可能仍然需要确保
  • 让我们加密证书颁发

    我正在尝试获取 Let s Encrypt 颁发的证书 已经过去了 3 个半小时 我不小心最初将我的 SecretName 设置为 echo tls 然后将其切换到我想使用的正确的 pandaist tls 我目前有这个 kubectl g

随机推荐

  • 在哪里可以找到 Linux 设备驱动程序第三版的示例源文件? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在努力通过Linux 设备驱动程序 第三版 http lwn net Kernel LDD3 虽然这
  • 将 html5 应用程序作为 Windows 可执行文件运行

    我在网上到处寻找这类事情 发现了很多类似的问题和文章 但没有一个回答这个问题 我有一个大型 HTML 5 应用程序 我想将其作为 Windows 上的可执行文件作为全屏本机应用程序运行 我可以想象你可以稍后在 c 中通过 webkit 来完
  • Leaflet:在 GeoJSON 层中使用动态过滤器

    我已经非常接近了 但我很难理解如何将多个用户提交的表单复选框值传递到 Leaflet geoJSON 过滤器函数并仅显示这些点 到目前为止我所拥有的 map filters on submit function e e preventDef
  • 如何使用 numba 优化 numpy.packbits?

    我正在努力优化numpy packbits import numpy as np from numba import njit prange njit parallel True def numba pack arr div su for
  • 如何在任何给定时间检查池中活动 sqlalchemy 连接的数量?

    我遇到过这样的情况 由于高流量负载 sqlalchemy 会不时耗尽活动连接 我想运行一些测试来验证和优化每个用例的池参数 但是 我找不到轮询活动连接计数的直接方法 当前设置如下 args mapping pool size 10 max
  • py2app 在构建过程中获取包的 .git 子目录

    我们在我们的工厂广泛使用 py2app 来生成自包含的 app 包 以便轻松进行内部部署 而不会出现依赖性问题 我最近注意到的一件事 但不知道它是如何开始的 是在构建 app 时 py2app 开始包含我们主库的 git 目录 例如 com
  • 加速(缓慢的)巨大的 WordPress 数据库

    我正在测试一个新项目 其中涉及使用 WordPress 安装 该安装有超过 150 万个帖子 通常帖子内容 标题只有一两行 所以很短 我已经有了强烈推荐的 W3 cache 插件 它很有帮助 但是当你第一次登陆一个页面时 需要 40 60
  • 检查菜谱中是否包含某种成分 - MYSQL

    嘿大家 我在有效运行查询 PHP 组合时遇到了一些麻烦 我似乎只是在 php ini 的内部循环中循环了太多结果集 我确信有一种更有效的方法可以做到这一点 非常感谢任何帮助 我有一张桌子 里面有 3500 个食谱 recipe rid re
  • 在这种情况下,为什么我必须显式解开字符串?

    我有一根绳子var oneString String 然后在一个方法中 当我想将一个字符串连接到oneString我必须这样做 oneString anyString 如果我不添加 我收到一个错误 String is not identic
  • xcode 错误:所选的运行目标对此操作无效

    我的应用程序在 4 3 模拟器和设备中运行良好 现在我想在 4 0 模拟器中测试它 并且我还有 4 2 1 设备 因此 我将 ios 部署目标设置为 4 0 也尝试过 4 2 但 xcode 给了我该错误 所选的运行目标对此操作无效 然后我
  • java.io.IOException:grpc 失败

    当我使用 call getFromLocationName 时 我收到一个 IOException 描述为 grpc failed 运行的代码 Override public void onMapReady GoogleMap google
  • 如何构造HttpPostedFileBase?

    我必须为此方法编写一个单元测试 但我无法构造 HttpPostedFileBase 当我从浏览器运行该方法时 它运行良好 但我确实需要一个自动单元测试 所以我的问题是 如何构造 HttpPosterFileBase 以便将文件传递给 Htt
  • C# 6 Elvis 运算符(空传播)是否短路

    为什么这段 C 代码会抛出 null 异常 bool boolResult SomeClass NullableProperty ItsOkProperty false 一旦 NullableProperty 求值为 null elvis
  • 使用 .net Core 3.1 的 Kestrel ssl JSON 配置中的证书问题

    我已经看到这个问题的答案 但它似乎不适用于 net core 3 1 此代码查找证书 using var store new X509Store Root StoreLocation LocalMachine store Open Open
  • 如何将 PHP 数组格式化为字符串

    我有这个 php 数组 items array Item 1 gt Value 1 Item 2 gt Value 2 Item 3 gt Value 3 我想知道是否有一个我从未听说过的优雅的 PHP 函数可以执行与此相同的操作 outp
  • 使用 Visual Studio 2019 部署到 Hololens 2

    我正在尝试部署到我的 Hololens 2 并尝试通过 wifi 连接到它 我按照此处的说明进行操作 https learn microsoft com en us windows mixed reality mrlearning base
  • 将 y 轴上的数字转换为字符串,其中 K 表示千 d3.js

    我正在使用 d3 js 图表来绘制 y 轴和 x 轴 它工作正常 但是 y 轴上的值可以说范围是 0 到 10000 我希望如果数字大于千 它将带有 K 如果数字是 1000 它将显示 1K 如果数字是 15000 它将在 y 轴刻度上显示
  • Android 开发 Windows Defender 需要排除哪些文件夹?

    我在Windows Defender中排除了以下文件夹 但 反恶意软件服务可执行文件 仍然使用大量CPU C Program Files Android Android Studio C Users ME android C Users M
  • 更改 LocalDb 的默认位置

    我首先使用 EF5 代码进行编程 并希望使用 LocalDb 如何更改 LocalDb 数据库文件的默认位置 默认位置是 USERPROFILE 目录 根据http blogs msdn com b sqlexpress archive 2
  • 如何为独立的 Sinatra 应用程序启用 SSL?

    我想在 Sinatra 中编写一个快速的服务器应用程序 它必须是独立的 即不使用 apache nginx passenger 但也必须支持 SSL 有没有一种简单的方法来启用 Sinatra 的 SSL 支持 例如使用 WEBRick 要