2016-12-12 2 views
0

Я использовал nginx x-accel-redirect в качестве интерфейса аутентификации для внешнего ресурса.Nginx x-accel redirect named location uri

В моем питона коде я бы сделать следующее:

/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 перенаправляются как методы 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

, но никакого ответа пока нет.

Edit:

Ваши конфиги для 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; 
} 
+0

Можете ли вы разместить конфигурацию nginx в части/getresource/and/resource/locations? –

ответ

2

Поскольку никто не ответил здесь, я хотел бы опубликовать ответ от Nginx форумов для завершения.

https://forum.nginx.org/read.php?2,271448,271549#msg-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...