gpt4 book ai didi

ruby-on-rails - 如何设置 Rubber + resque_web + nginx

转载 作者:行者123 更新时间:2023-12-04 05:41:08 25 4
gpt4 key购买 nike

使用 Rubber 我用 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 文件。

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

继续。这个 nginx 配置不起作用。但是我走得更远了,至少我现在正在访问 WEBrick 服务器。我得到了一个页面,上面写着:
Sinatra doesn’t know this ditty.

所以我改变了我的配置,认为 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 (由 Rubber 添加到您的工具索引页面的链接只是 /resque )。但是 resque 网页上的所有其他链接(包括任何 CSS 和 .js 文件)现在都已损坏,因为这些链接没有以 resque/ 开头。 .换句话说,Working 的链接就是 /working但它必须是 /resque/working让 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 时,我会看到“Sinatra...ditty”页面或 /resque/overview .

然后我重新添加了重写:
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 服务器很好地协同工作?

最佳答案

哇,真是巧合。我正在努力将我们的应用程序从 Rubber 1.15 -> 2.0.5 升级,昨天我遇到了这个问题!

是的,rubber vulcanize resque应该解决这个问题,但显然没有人编写 Nginx 代理配置。

你在 Nginx 上的第一次尝试几乎是正确的做法。

CSS、图像和链接损坏的原因是 resque-web 正在寻找与 resque-web 应用程序根相关的所有内容。您需要更改 resque-web Rack 文件 (/config/resque-web.ru) 以启动/resque 子目录中的应用程序。这样一切都会是相对的(/resque/overview 等)并且会很好。

我提交了 pull request昨天为 future 的用户解决了这个问题,但是您可以将这些更改应用于您的项目,一切都会为您服务。

如果这不起作用,请告诉我。

关于ruby-on-rails - 如何设置 Rubber + resque_web + nginx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11231866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com