Nginxリバースプロキシの背後で実行されているFlaskアプリがいくつかあります。/ demo / pipelineで始まるURLを持つすべてのリクエストは、ポート7001でリッスンしているFlaskインスタンスに送信されます。Flaskバックエンドがhttp://flask.pocooに従ってこのルートURLを考慮できるように、X-Script-Nameヘッダーを設定しています。 .org / snippets /35/。これにより、バックエンドコードは/ demo/pipelineルートに相対的なURLを生成できます。たとえば、/ demo / pipeline / static/utils.jsです。
リクエストを/demo/pipelineアプリにルーティングするNginx構成の一部を次に示します。
server {
listen 80;
server_name localhost;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
location / {
proxy_set_header X-Script-Name /;
proxy_pass http://localhost:7000;
}
location /demo/pipeline/ {
proxy_set_header X-Script-Name /demo/pipeline;
rewrite ^/demo/pipeline/(.*) /$1 break;
proxy_pass http://localhost:7001;
}
...
}
では、クライアント側でルートURLをどのように説明しますか?たとえば、私のjQueryAJAX呼び出しの1つを取り上げます。
$.ajax
type: 'PUT'
url: '/subreddit/update'
data: name: @subreddit
error: -> $(elem)?.text val
このリクエストを/subreddit/updateではなく/demo/ pipeline / subreddit / updateに移動するにはどうすればよいですか?ルート名を変更するか、Nginxリバースプロキシを削除した場合でもコードが機能し続ける必要があるため、文字列'/ demo/pipeline'をハードコーディングしたくありません。