无法分配所请求的地址 - 绑定(2)到 "xyz.herokuapp.com" 端口28159 (Errno::EADDRNOTAVAIL)

3
我正在将ROR应用上传至Heroku,但是我遇到了这个错误。
/app/vendor/bundle/ruby/2.4.0/gems/puma-3.12.1/lib/puma/binder.rb:273:in 'initialize':
Cannot assign requested address - bind(2) for "xyz.herokuapp.com" port 28159 (Errno::EADDRNOTAVAIL)

I attached procfile and puma.rb code.

Procfile:

web: bundle exec puma -c config/puma.rb
release: bundle exec rake db:migrate

puma.rb:

threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }
threads threads_count, threads_count
port        ENV.fetch("PORT") { 3000 }
environment ENV.fetch("RAILS_ENV") { "development" }

我尝试使用 Puma 3.7,但没有成功。

我也更改了 Procfile 的配置。

在本地运行正常,但在 Heroku 上出现错误。

1个回答

4

当我在Heroku上部署Rails 6.0时,遇到了相同的问题。为了向ActionDispatch::HostAuthorization中间件提供Heroku服务器的url,我使用了一个名为HOST的环境变量,因为rails要求这样做以防止DNS重绑定和其他Host头攻击。然而,环境变量HOST的名称导致了副作用,当Heroku服务器尝试启动服务器时出现了问题,讨论该问题的地方在这里,我使用了这里相同的解决方案。

  1. heroku config:unset HOST
  2. heroku config:set DOMAIN=youdomain.com
  3. 在production.rb中,将config.hosts << ENV['HOST']改为config.hosts << ENV['DOMAIN']
  4. 将文件添加到git中,提交并部署到heroku

希望这可以帮助到你。


这个可行。我最初将HOST设置为default_url_options。将变量名更改为DEFAULT_URL_HOST就可以了。谢谢! - Amit Patel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接