2

ラバーを使用して、既存のプロジェクトを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 Webページ上の他のすべてのリンク(CSSおよび.jsファイルを含む)は壊れていますresque/。言い換えれば、Workingへのリンクはただですが、nginxがそれをどうするかを知る/working必要があります。/resque/working

書き直しを取り除いたり、インデックスページをポイントするように変更したりするなど、他のことも試しました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とResqueWebサーバーをうまく連携させる方法を知っている人はいますか?

4

1 に答える 1

3

うわー、なんて偶然だ。アプリをRubber1.15->2.0.5からアップグレードする作業をしていますが、昨日この問題が発生しました。

はい、rubber vulcanize resqueこれを処理する必要がありますが、明らかに誰もNginxプロキシ構成を作成していません。

Nginxでの最初の試行は、ほぼ正しいことでした。

CSS、画像、リンクが壊れている理由は、resque-webがresque-webアプリのルートに関連するすべてのものを探しているためです。必要なのは、resque-web Rackファイル(/config/resque-web.ru)を変更して、/resqueのサブディレクトリにあるアプリを起動することです。そうすれば、すべてが相対的(/ resque / overviewなど)になり、問題がなくなります。

昨日、将来のユーザーのためにこれを修正するためにプルリクエストを送信しましたが、これらの変更をプロジェクトに適用すると、すべてがうまくいきます。

それがうまくいかない場合は教えてください。

于 2012-06-28T07:01:25.970 に答える