nginx x-accel重定向命名位置URI



i使用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 ) 

这也将转发HTTP方法,直到NGINX 1.10。由于NGINX 1.10所有X-Accel-redirects均以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/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;
}

由于没有人在这里回答,所以我想从nginx论坛上发布答案以完成。

https://forum.nginx.org/read.php?2,271448,271549#mmsg-271549

嗨,

在这里您做什么。因为您无法使用X-Accel-redirect设置不同的位置,您应该设置其他带有位置的标头,在Nginx配置中这样的东西:

location @resources {
    set $stored_real_location $upstream_http_x_real_location;
    proxy_pass http://resources-backend$stored_real_location;
}

在上面的python代码中应设置以下标题:

X-Accel-Redirect: @resources
X-Real-Location: /some/other/path...

相关内容

  • 没有找到相关文章

最新更新