15

場所に基づいてproxypassを介して2つの異なるバックエンドにURLリクエストをプロキシしたい場合、最も迅速でクリーンなソリューション.

location /app1/ {
    alias /var/www/ruby/public;
    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;
    try_files $uri $uri/ @ruby;
}

location @ruby {
    proxy_pass http://127.0.0.1:3000;
}

location /app2/ {
    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;
    try_files $uri $uri/ @other;
}

location @other {
    proxy_pass http://127.0.0.1:8080;
}

この構成では、nginx は「/app1」または「/app2」をプロキシに渡し、バックエンドは URL/コマンドを認識しません。

たとえば、アクセスするときにhttp://127.0.0.1:3000のみに渡したいのですが、上記の構成ではas としても渡します。同じことが言えます/messageshttp://<nginx>/app1/messages/app1/http://127.0.0.1:3000/app1/messages/app2

4

1 に答える 1

15

アップストリーム名の最後に「/」を付けてみてください。

proxy_pass http://127.0.0.1:8080/;

この投稿を参照してください: nginx proxy_pass でリクエスト URL を保持する方法

于 2012-12-19T18:18:50.880 に答える