5

nginx を介してリバース プロキシされた、同じサーバーから複数のアプリケーションを提供したいと考えています。これらのアプリケーションが、サブ URI を持つ単一のドメイン名で利用できるようにしたいと考えています。

例えば

www.mydomain.com/nodejs => ポート 80 をリッスンしている nginx によってキャッチされ、ポート 3001 で実行されている node.js アプリに提供されます

www.mydomain.com/rails => ポート 80 をリッスンしている nginx によってキャッチされ、ポート 3002 で実行されている Rails アプリに提供されます

私の最初の試みは、2 つのアップストリームから始めることです。

# /etc/nginx/sites-available/mydomain.com

upstream nodejs {
  server 127.0.0.1:3001;
}

upstream rails {
  server 127.0.0.1:3002;
}

server {
  listen 80 default deferred;

  # What do I put here so that
  # mydomain.com/nodejs is proxied to the nodejs upstream and
  # mydomain.com/rails  is proxied to the rails  upstream ???
}

誰かがこれを知っているか、私を正しい方向に向けていますか?

4

2 に答える 2

6

どうですか:

upstream nodejs {
    server 127.0.0.1:3001;
}

upstream rails {
    server 127.0.0.1:3002;
}

server {
    listen 80;  

    location /nodejs {
        proxy_pass         http://nodejs;
        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }

    location /rails {
        proxy_pass         http://rails;
        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }

}

またはすぐに:

server {   
    listen 80;     

    location /nodejs {
        proxy_pass         http://127.0.0.1:3001;
        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }

    location /rails {
        proxy_pass         http://127.0.0.1:3002;
        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }

}

?

ほとんどのプロキシ ディレクティブはオプションですが (必要なのはproxy_passandだけですproxy_redirect)、便利です。

于 2012-04-17T19:33:48.480 に答える
0

css、js、imagesファイルが抜けているという質問ですが、こうすればいいのですが、

Express フレームワークを使用する場合。このコード行を追加する必要があります

app.enable('trust proxy');  

この値「トラスト プロキシ」のデフォルト値は無効です。

于 2014-04-26T03:32:20.203 に答える