Skip to content

搞英语 → 看世界

翻译英文优质信息和名人推特

Menu
  • 首页
  • 作者列表
  • 独立博客
  • 专业媒体
  • 名人推特
  • 邮件列表
  • 关于本站
Menu

如何让 NixOS 使用 OpenSSL 1.x 编译 nginx

Posted on 2022-10-30

英雄形象 alrest-orcas图片由Waifu Diffusion v1.3 (float16) 生成——云海、异度之刃2、阿祖达、蓝天、巨树、逆戟鲸、1girl、红发、武士刀

NixOS 的优势之一是您可以使用 NixOS 模块来执行诸如覆盖软件包版本之类的操作,以便您可以自定义计算机上正在运行的软件。您可以使用它来手动修补程序,或者用其他版本覆盖依赖关系。今天我将向你展示如何使用覆盖来强制 NixOS 使用 OpenSSL 1.1.1 而不是 OpenSSL 3.x 重建nginx 。如果您想降低与针对 OpenSSL 3.x 宣布的 CRITICAL 安全问题相关的风险(OpenSSL 1.1.1 未列为 CRITICAL),您可能需要执行此操作。

卡迪是咖啡
< Cadey > 除非你运行 NixOS 不稳定或使用来自 NixOS 不稳定的 nginx 包,否则这不是必需的。如果您使用 NixOS 22.05,除非您以其他方式覆盖,否则您已经在使用 OpenSSL 1.1.1。

打开您的configuration.nix文件并将其添加到模块块中:

 nixpkgs.overlays = [ (final: prev: { nginxStable = prev.nginxStable.override { openssl = prev.openssl_1_1; }; }) ];

这将创建一个覆盖,将 nginx 包替换为 OpenSSL 替换为 OpenSSL 1.x 包的版本。

玛拉是黑客
< Mara > 你需要在这里使用nginxStable而不是nginx因为services.nginx.package默认为nginxStable 。或者,您可以使用类似这样的方法直接更改 nginx 包: services.nginx.package = (pkgs.nginxStable.override { openssl = pkgs.openssl_1_1; });根据事实和情况,这可能是理想的。

它使用覆盖来更改传递到包构建中的 OpenSSL 版本。这是有效的,因为nixpkgs中的包是这样定义的:

 { stdenv, openssl, fetchurl }: stdenv.mkDerivation { # whatever is needed to build the software }

顶行中的每个输入都是包的参数(它被建模为一个函数)。当您使用.override时,您将覆盖传递给包函数的参数。这意味着当您使用我粘贴的覆盖时,您将覆盖传递给 nginx 构建过程的 OpenSSL 版本,这将使 nginx 依赖于 OpenSSL 1.x。

根据所讨论的软件,您应该能够使用此策略来修补任何其他面向公众的程序。唯一的问题是软件需要与 OpenSSL 1.x 兼容。

卡迪是咖啡
< Cadey > 您可能希望在 NixOS 不稳定升级到 OpenSSL 3.0.7 后立即删除它。
玛拉是黑客
< Mara > 感谢 ckie 审查这篇文章的正确性!

原文: https://xeiaso.net/blog/nixos-nginx-openssl-1.x

本站文章系自动翻译,站长会周期检查,如果有不当内容,请点此留言,非常感谢。
  • Abhinav
  • Abigail Pain
  • Adam Fortuna
  • Alberto Gallego
  • Alex Wlchan
  • Answer.AI
  • Arne Bahlo
  • Ben Carlson
  • Ben Kuhn
  • Bert Hubert
  • Bits about Money
  • Brian Krebs
  • ByteByteGo
  • Chip Huyen
  • Chips and Cheese
  • Christopher Butler
  • Colin Percival
  • Cool Infographics
  • Dan Sinker
  • David Walsh
  • Dmitry Dolzhenko
  • Dustin Curtis
  • eighty twenty
  • Elad Gil
  • Ellie Huxtable
  • Ethan Dalool
  • Ethan Marcotte
  • Exponential View
  • FAIL Blog
  • Founder Weekly
  • Geoffrey Huntley
  • Geoffrey Litt
  • Greg Mankiw
  • Henrique Dias
  • Hypercritical
  • IEEE Spectrum
  • Investment Talk
  • Jaz
  • Jeff Geerling
  • Jonas Hietala
  • Josh Comeau
  • Lenny Rachitsky
  • Liz Danzico
  • Lou Plummer
  • Luke Wroblewski
  • Matt Baer
  • Matt Stoller
  • Matthias Endler
  • Mert Bulan
  • Mostly metrics
  • News Letter
  • NextDraft
  • Non_Interactive
  • Not Boring
  • One Useful Thing
  • Phil Eaton
  • Product Market Fit
  • Readwise
  • ReedyBear
  • Robert Heaton
  • Rohit Patel
  • Ruben Schade
  • Sage Economics
  • Sam Altman
  • Sam Rose
  • selfh.st
  • Shtetl-Optimized
  • Simon schreibt
  • Slashdot
  • Small Good Things
  • Steve Blank
  • Taylor Troesh
  • Telegram Blog
  • The Macro Compass
  • The Pomp Letter
  • thesephist
  • Thinking Deep & Wide
  • Tim Kellogg
  • Understanding AI
  • Wes Kao
  • 英文媒体
  • 英文推特
  • 英文独立博客
©2025 搞英语 → 看世界 | Design: Newspaperly WordPress Theme