0

Getting 'Forbidden' on clicking 'Enqueue now' in staging and production environment.

Using 'rails', '5.1.6', sidekiq-cron (1.0.4) which uses fugit (~> 1.1) and sidekiq (>= 4.2.1)

I can see from sidekiq-cron issue 60 and sidekiq-cron issue 61 that issue got resolved a long back but still getting same issue.

Mayuresh Srivastava
  • 1,332
  • 17
  • 24

1 Answers1

0

Sidekiq::Web uses Rack::Protection to protect application against typical web attacks (e.g CSRF, XSS, etc). Rack::Protection would invalidate session and raise 'Forbidden' error if it finds that request doesn't satisfy security requirements. One of the possible situations is having application working behind a reverse proxy and not passing important headers to it (X-Forwarded-For,X-Forwarded-Proto).

Well after spending enough time figuring out the issue. This is what helped me.

Nginx configuration:

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
proxy_set_header X-Forwarded-Proto https;  
proxy_set_header Host $http_host;  
proxy_set_header X-Real-IP $remote_addr;  
proxy_redirect off;  
proxy_http_version 1.1;  
proxy_set_header Connection '';  
proxy_pass http://app;
#proxy_set_header  X-Forwarded-Ssl on; # Optional
#proxy_set_header  X-Forwarded-Port $server_port;
#proxy_set_header  X-Forwarded-Host $host;

Other solutions, which did not work for me but worked for others:

Sidekiq monitoring

Sidekiq issue 2487

Rack protection and nginx

Sidekiq issue 2560

Mayuresh Srivastava
  • 1,332
  • 17
  • 24