【问题标题】:Setting up https on a server with Phoenix/Elixir and nginx使用 Phoenix/Elixir 和 nginx 在服务器上设置 https
【发布时间】:2016-08-23 06:09:33
【问题描述】:

我知道如何使用 nginx 为 clojure web 应用程序设置 https。如何为凤凰做到这一点? 在prod.exs 我有这个:

config :my_app, MyApp.Endpoint,
  url: [host: "my_website.com", port: 443],
  http: [port: 4000],
#  https: [port: 443,
#          keyfile: System.get_env("SOME_APP_SSL_KEY_PATH"),
#          certfile: System.get_env("SOME_APP_SSL_CERT_PATH")],

  cache_static_manifest: "priv/static/manifest.json"

我有这个:

ssl_certificate:  /etc/letsencrypt/live/my_app.com/fullchain.pem;
ssl_certificate_key: /etc/letsencrypt/live/my_app.com/privkey.pem;

我也想在 Phoenix 上使用 nginx。

1) 我应该从“prod.exs”中完全删除“http: [port: 4000]”吗?

2) 我应该取消注释 "https: [port: 443,...." 吗?或者我应该同时拥有它们?我不想通过 http 访问网站,否则我会让 nginx 通过将用户从 http 重定向到 https 来处理它。

3) 还是应该删除 https 和 http 让 nginx 处理?

4) 键“url”和它的“port”怎么样?

【问题讨论】:

    标签: ssl nginx https elixir phoenix-framework


    【解决方案1】:

    如果您使用 Nginx 来终止连接的 SSL 部分,那么您将应用服务器配置为 HTTP 和您喜欢的任何端口(只要您将 Nginx 配置为转发到它,4000 就可以了)。如果您的服务器配置正确,它将不会响应 HTTP 端口 4000 请求,因此无法绕过 SSL。

    您在应用服务器级别引用的 SSL 配置将应用服务器配置为终止 SSL 连接(不需要 Nginx)。感谢cowboy,Phoenix 应用程序都是“功能齐全”的 Web 服务器。因此,它们可以处理 SSL 终止以及为应用程序的动态和静态资产提供服务。

    URL 配置是为了让您的应用程序知道它的域并且可以生成完整的 url 以及路径。

    【讨论】:

    • 这不是理论,而是您需要做什么的确切说明。让我看看我是否可以让您更简单,因为您似乎没有理解明确的说明。将http: [port: 4000] 部分保留在您的配置中。不要取消注释https: [port: 443,....,因为 Nginx 将为您终止 SSL 连接。配置您的 Nginx 实例以将请求转发到 http://127.0.0.1:4000。最后,当有人试图帮助你时,不要这么粗鲁。
    【解决方案2】:

    如果您在 Phoenix 应用程序前设置了使用 nginx,则使用 nginx 终止 ssl 连接(您的选项 3)。您仍然需要在 Phoenix 中配置 http,因为 nginx 将使用 http 代理到您的应用程序。因此:

    config :my_app, MyApp.Endpoint,
      url: [host: "my_website.com", port: 4000],
      http: [port: 4000]
    

    假设您将 nginx 配置为在端口 4000 上代理到您的应用程序。您还需要将 host 配置键调整为您网站的基本 URL,因为您生成的任何 URL 都将使用此基本名称(如杰森提到)。

    【讨论】:

    • 所以我不需要 Phoenix 配置中的“https”键?
    • 你确定url: [host: "my_website.com", port: 4000], -- 是端口 4000 而不是 80?这说phoenixframework.org/docs/…应该是80
    • 端口应该是80,因为它用于在路由中生成完整路径。
    猜你喜欢
    • 2021-10-15
    • 2018-05-30
    • 2018-08-08
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    • 2022-12-04
    • 2021-12-31
    • 1970-01-01
    相关资源
    最近更新 更多