外部リソースの認証フロントエンドとして nginx x-accel-redirect を使用していました。
私のpythonコードでは、次のことを行います。
/getresource/
def view(self, req, resp):
name = get_name(req.user.id) # authenticates request.
resp.set_header('X-Accel-Redirect', '/resource/%s/' %name )
これにより、nginx 1.10 までは HTTP メソッドも転送されます。nginx 1.10 以降、すべての x-accel-redirect は GET メソッドとして転送されます。
このスレッドから: https://forum.nginx.org/read.php?2,271372,271380#msg-271380
HTTP メソッドを転送する正しい方法は、名前付きの場所を使用することであることを理解しています。これを行う方法に関するドキュメントが見つかりません。私は次のことを試しました:
def view(self, req, resp):
name = get_name(req.user.id)
resp.set_header('X-Accel-Redirect', '@resource' )
ただし、これは「@resource /」にリダイレクトされます。
「@resource /name」にリダイレクトしたいと思います。
nginx フォーラムでもこの質問をしました: https://forum.nginx.org/read.php?2,271448
しかし、まだ応答がありません。
編集:
nginx の構成の投稿
location /getresource {
proxy_pass http://127.0.0.1:8000;
}
location /resource {
internal;
proxy_pass http://127.0.0.1:8888;
}
location @resource {
internal;
proxy_pass http://127.0.0.1:8888;
}