ラバーを使用して、既存のプロジェクトを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サーバーをうまく連携させる方法を知っている人はいますか?