具体的には、場所をルーティングするために使用しているURIの一部を消費(キャプチャ?)しないようにするには、Nginxが必要だと思います。しかし、そのようなことが可能かどうかはわかりません。
バックアップさせてください。アプリのセットアップを移行しています。以前は、すべてに一致する単一のロケーション ブロックを含む Nginx 構成ファイルがありました。
server {
listen 80;
server_name ec2-54-234-175-21.compute-1.amazonaws.com;
location / {
...
proxy_pass http://localhost:8000/;
}
このセットアップでは、今まで Django アプリを実行していました。Nginx がユーザーを唯一のエンドポイントにルーティングした後、Django は URI 全体を消費します。これが意味することは、内部的に、Django は切り捨てて、それも必要とする を/api/
持っているということです。1.0
次に、Nginx を使用して、それぞれがアプリをホストする複数のサーバーをプロキシします。前述の内部ルーティングのため、Django アプリは (少なくとも) の URI を受け取る必要が/1.0
あり、もう一方 (Flask 上) は を取得する必要があります/api/2.0
。ただし、Nginx のロケーション ディレクティブを意味のあるものにするためには、2 つのアプリケーションを区別する必要があります。私が考え出したのは、次の 2 つの場所ディレクティブだけを用意するということです。
server {
listen 80;
server_name ec2-54-234-175-21.compute-1.amazonaws.com;
location /api/[1.0] {
...
proxy_pass http://localhost:8000/;
}
location / {
...
proxy_pass http://localhost:8080/;
}
ただし、括弧内の [1.0] に注意してください。それが存在する場合、目的のリソースに実際にアクセスするには、/api/1.0/1.0 の URI を入力する必要があることに気付きました。そのため、どういうわけか、nginx conf に消費しない場所が必要です。これをもっと簡単な言葉で表現する方法を知っていれば、そうするでしょう。私が望むことは可能ですか?