回答:
リライトを使用して、URLの余分な部分を削除できると思います。あなたの場合、私はあなたが使用できると思います:
location /route/ {
rewrite ^/route/?(.*)$ /$1 break;
proxy_pass http://127.0.0.1:9000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
ただし、アプリに内部リンクがある場合、/ abc / fooを指す場合があります。これを行う場合、代わりに/ route / abc / fooを指す必要があるため、生のリクエストが正しく着信します。可能であれば、nginxの設定をそのままにして、代わりにサブディレクトリにあることを認識するようにアプリを設定する方が良い場合があります。
これは古い質問であることは知っていますが、同じ問題を解決しようとしていたとき、Googleのトップヒットでした!
以下を試してください
location /route/ {
proxy_pass http://127.0.0.1:9000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
vim nginx.conf
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8080;
location / {
proxy_pass http://compute-1-36:8787;
proxy_redirect http://compute-1-36:8787/ $scheme://$host:8080/;
}
}
このコードは8080でリッスンし、compute-1-36のポート8787にリダイレクトします。場所で他のパスを選択できます/
/
は、場所にリストされているプレフィックスを削除する方法として文書化されています。