gpt4 book ai didi

web-deployment - Elixir Phoenix 生产服务器出现 Letsencrypt 更新问题

转载 作者:行者123 更新时间:2023-12-03 23:58:06 25 4
gpt4 key购买 nike

我有一个使用 Elixir Phoenix 框架构建的站点。该网站在开发和生产模式下都运行良好。

当 Phoenix 服务器在开发模式下运行时,我更新Let's Encrypt证书没有问题,但是当完全一样应用程序在生产模式下运行,我在尝试续订时不断收到权限错误。请注意,我说的是 完全一样应用程序,在 FreeBSD 服务器,由 执行同 用户 - 没有 sudo 的两个命令. 只有区别是MIX_ENV=prod
我还注意到,在 prod 模式下,当 Letsencrypt 尝试访问我的 priv/static/.well-known/acme-challenge/(some-unique-string) 时,phoenix 服务器会记录 404 错误。我对 phoenix +letsencrypt 的基本设置在 this blog post 中有详细说明。

问题是: Phoenix 服务器如何在“prod”和“dev”模式之间以不同的方式处理目录/文件权限?

  • 使用 Elixir 1.2.4 和 Phoenix 1.1.4

  • 更新:

    伙计们,由于 LetsEncrypt 和 Phoenix 框架发展迅速,如果您使用的是 LetsEncrypt 和 Phoenix 1.2.0 的最新 cerbot,我上面列出的问题不再是问题

    但这并不是对原始问题的回答。

    最佳答案

    我已经解决了它,通过使用路线,而不是文件:

    scope "/.well-known", MyApp do
    get "/acme-challenge/:challenge", AcmeChallengeController, :show
    end

    和一个简单的 Controller ..
    defmodule AcmeChallengeController do
    use MyApp, :controller

    def show(conn, %{"challenge" => "the_random_file_name"}) do
    send_resp(conn, 200, "TheHashInTheFile")
    end

    def show(conn, _) do
    send_resp(conn, 200, "Not valid")
    end
    end

    这是硬编码、编译并且比发送文件更快,但是,也可以使用某种键/值存储,并在无需重新部署的情况下从 UI 管理(添加/删除)挑战。

    关于web-deployment - Elixir Phoenix 生产服务器出现 Letsencrypt 更新问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37216626/

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