如何设置橡胶+ resque_web + nginx

使用橡胶我用resque和redis硫化了我现有的项目。 我已经全部部署了。 打到web_tools索引显示一个Resque链接。 但点击它给了我一个404。

我想Nginx不知道该怎么做“/ resque”,所以我添加了文件config/rubber/role/web_tools/resque-nginx.conf

 <% if resque_host = rubber_instances.for_role('resque_web').first %> <% @path = "/etc/nginx/rubber/tools/resque.conf" %> location /resque { proxy_pass http://<%= resque_host.full_name %>:<%= rubber_env.resque_web_port %>; } <% end %> 

基本上从同一个目录复制haproxy-nginx.conf文件。

我的第一个问题是 – 为什么我需要这样做? 应该硫化已经做了这个还是我做错了已经?

继续。 这个nginxconfiguration不起作用。 但是我有点远了,至less我现在打了WEBrick服务器。 我有一个网页说:

 Sinatra doesn't know this ditty. 

所以我改变了我的configuration,认为Resque的WEBrick服务器不知道什么/ resque是:

 location /resque { rewrite ^/resque/(.*) /$1 break; proxy_pass http://<%= resque_host.full_name %>:<%= rubber_env.resque_web_port %>; } 

这工作,但只有当我手动去https://myhost.com/resque/overview (橡胶添加到您的工具索引页面的链接只是/resque )。 但是,resque网页上的所有其他链接(包括任何CSS和.js文件)现在都被破坏,因为链接不以resque/开头。 换句话说,Working的链接只是/working但是需要/resque/working for nginx来知道如何处理它。

我试过其他的东西,如摆脱重写和改变索引页指向resque/overview但仍然给我“Sinatra不知道这个小”页面。

我试过了:

 location /resque { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://<%= resque_host.full_name %>:<%= rubber_env.resque_web_port %>; } 

当我点击/resque/resque/overview时,我会看到“Sinatra … ditty”页面。

然后我把重写加回来:

 location /resque { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; rewrite ^/resque/(.*) /$1 break; proxy_pass http://<%= resque_host.full_name %>:<%= rubber_env.resque_web_port %>; } 

这与没有进行所有代理服务的结果是一样的。

有谁知道如何让nginx和Resque web服务器一起工作吗?

哇,真巧。 我正在从橡胶1.15 – > 2.0.5升级我们的应用程序,我昨天遇到了这个问题!

是的, rubber vulcanize resque应该照顾这个,但显然没有人写了Nginx的代理配置。

你第一次尝试Nginx是非常正确的事情。

CSS,图像和链接被破坏的原因是因为resque-web正在寻找所有与resque-web应用程序的根相关的东西。 你需要更改resque-web Rack文件(/config/resque-web.ru)来启动/ resque的子目录中的应用程序。 这样一切都将是相对的(/ resque /概述等),并罚款。

我昨天提交了一个拉取请求,以便为将来的用户解决这个问题,但是您可以将这些更改应用到您的项目中,一切都将为您工作。

让我知道如果这不起作用。