You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gigalixir上Phoenix应用HTTP转HTTPS重定向问题求助

解决Gigalixir上Elixir/Phoenix应用HTTP转HTTPS的问题

我来帮你搞定这个HTTPS强制跳转的问题,在Gigalixir部署Phoenix应用时,这个场景我之前碰到过好几次,咱们一步步排查解决:

1. 修正force_ssl的配置细节

你之前添加的force_ssl配置差了几个关键项,首先不要把host设为nil,明确指定你的域名,同时要确保Phoenix信任Gigalixir反向代理发送的x-forwarded-proto头。更新后的完整配置应该是这样:

config :zoinks, ZoinksWeb.Endpoint,
  load_from_system_env: true,
  server: true,
  secret_key_base: "${SECRET_KEY_BASE}",
  url: [scheme: "https", host: "sqrnut.gigalixirapp.com", port: 443],
  cache_static_manifest: "priv/static/cache_manifest.json",
  # 修正后的force_ssl配置
  force_ssl: [rewrite_on: [:x_forwarded_proto], host: "sqrnut.gigalixirapp.com", port: 443],
  # 关键:让Phoenix信任反向代理的x-forwarded-proto头
  http: [port: System.get_env("PORT") || 4000, protocol_options: [x_forwarded_proto: true]]

解释下:

  • host指定域名能确保Phoenix生成正确的跳转URL,避免跳转出错
  • protocol_options: [x_forwarded_proto: true]是核心:Gigalixir的负载均衡器会处理SSL终止,所有到你应用的请求都是HTTP,Phoenix需要通过这个头判断原始请求的协议,才能触发HTTPS跳转

2. 确认Procfile配置正确

Gigalixir依赖Procfile启动应用,确保你的项目根目录下的Procfile内容是:

web: mix phx.server

如果Procfile配置错了,应用可能不会加载正确的Endpoint配置。

3. 清除缓存并重新部署

旧的配置可能被缓存,所以一定要提交修改并重新部署:

git add config/prod.exs  # 假设你修改的是生产环境配置文件
git commit -m "Fix HTTPS force redirect config"
git push gigalixir main

如果你用的是Gigalixir的mix部署工具,也要确保重新构建镜像。

4. 查看应用日志排查问题

部署完成后,通过命令查看应用日志,确认配置是否生效:

gigalixir logs --tail

如果看到类似Endpoint started的日志,检查里面的配置是否包含你设置的force_ssl和http选项;如果有跳转相关的错误,日志里也会给出线索。

5. 验证跳转效果

等应用重启完成后,访问http://sqrnut.gigalixirapp.com,应该会自动跳转到https://开头的地址。如果还是不行,尝试用curl查看响应头:

curl -v http://sqrnut.gigalixirapp.com

看看是否有Location头指向HTTPS地址,或者是否有x-forwarded-proto头被正确传递。

内容的提问来源于stack exchange,提问作者Mitkins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:26:10