ロケーションに基づいて、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
も同様です
アップストリーム名の最後に「/」を付けてみてください。
proxy_pass http://127.0.0.1:8080/;
この投稿を参照してください: nginx proxy_passを使用してリクエストURLを保持する方法