Estou tentando criar uma seção "somente usuário" e consegui chegar até aqui, mas estou preso. Como posso enviar o URL solicitado para minha API?
Aqui está minha rota da API Express.js, muito simples. O usuário visita um link (link direto, links incorporados / vídeos em uma página, etc.) e tenta visualizá-lo. Eu redireciono o seu pedido para o meu / api e verifico se ele pode ver ou não. Coisas que estão abaixo do trabalho se eu remover a parte: file e testar com 200 e 403, mas eu preciso poder verificá-las dinamicamente.
Uma explicação mais clara está abaixo.
"/" é o URL genérico, mas / api deve ser acionado apenas quando um visitante tentar acessar um arquivo, independentemente da localização / URL do arquivo. Então, o que eu quero fazer é: "Ok, eu sou Nginx e vejo que alguns visitantes tentam acessar alguns arquivos. Vamos passar o nome desse arquivo para o servidor Express.js e deixar verificar se esse usuário tem permissão para ver essa imagem ou não. Se diz 200, eu vou permitir. Se é 403, então não. "
app.get('/api/:file', function(req,res,next) {
// This part decides what you're allowed to see.
// Redis database query. Returns 0 or 1.
// 1 returns 200, 0 returns 403.
res.sendStatus(200); // It works, so this part is done.
});
Mas eu não sei como passar o parâmetro url solicitado do Nginx para o meu aplicativo Express.js (por exemplo, image.jpg, video.mp4 em link format) para que eu possa verificar a permissão do usuário em relação ao banco de dados e retornar uma resposta dinâmica para cada arquivo.
Aqui está minha configuração atual do Nginx.
upstream localhost {
ip_hash;
server 127.0.0.1:8000;
server 127.0.0.1:8001;
server 127.0.0.1:8002;
server 127.0.0.1:8003;
}
server {
listen 80;
server_name localhost;
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|html|htm)$ {
root images;
auth_request /api;
}
location / {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_pass http://localhost;
}
}