Heroku /sidekiq杀死 /重试作业时错误 - 403禁止攻击



我在我的Heroku应用程序上使用Sidekiq,当我想杀死工作或重试时,它将导致403页的禁止页面,并带有错误:

WARN -- : attack prevented by Rack::Protection::HttpOrigin

我的Heroku应用程序:http://myapp.herokuapp.com我的域名不起作用:https://www.myapp.my

在sidekiq文档中,我发现这是为了修复添加到路由的错误。rb,但无济于事:sidekiq :: web.set:session_secret,rails.application.secrets [:secret_key_base]

我的session_store.rb文件:

Rails.application.config.session_store :cookie_store, key: '_myapp_session'

我想SSL存在问题。我为nginx.conf找到了这个解决方案,但是如何在Heroku上进行设置以测试是否有帮助?

proxy_set_header        X-Forwarded-Host 'my-host.com';
proxy_set_header        X-Forwarded-Proto $scheme;

或任何其他解决方案如何解决403禁止?

编辑:我的路线

  require 'sidekiq/web'
  authenticate :admin do
    mount Sidekiq::Web => '/sidekiq'
  end

它确实在Local主机上工作,但在生产中不起作用

编辑#2:如果我关闭https并让我的应用在http上,它确实有效,所以如何告诉我的应用程序/sidekiq使用https?

proxy_set_header x-forwarded-proto $ proge;

这将告诉您的申请原始请求进来 即使Nginx到Unicorn的请求是http。

,也使用https

但是如何在Heroku上做?

我在Heroku上遇到了同样的问题。

定制域的解决方案;

  • 您需要在配置文件中强制SSL您的Rails应用程序。因为Heroku应用程序使用默认的HTTPS方案作为应用程序URL。如果您不强迫它,它将在转发请求中使用不同的方案。 config/environments/production.rb

    # Force ssl
    config.force_ssl = true
    
  • 如果您在Heroku上使用了免费的dynos,则无法使用SSL功能,并且应该使用Heroku应用程序URL访问Sidekiq Web UI https://your-app.herokuapp.com/sidekiq

最新更新