web-dev-qa-db-ja.com

場所ごとのNginx / uriをproxy_passに書き直す

ロケーションに基づいて、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/commandを認識しません。

たとえば、http://127.0.0.1:3000にアクセスする場合、/messagesだけにhttp://<nginx>/app1/messagesを渡したいのですが、上記の構成では、/app1/http://127.0.0.1:3000/app1/messagesとして渡します。 /app2も同様です

15
lowk3y

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

proxy_pass http://127.0.0.1:8080/;

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

12
user1916656