我将nginx设置为node.js的反向代理。对于文件上传,我要求NGINX将请求转发给node.js,但是对于文件下载,我希望NGINX完成。我可以使用GET请求让它工作。
但我真的想通过POST请求验证会话,然后提供文件。请告知如何实现这一目标。
这是位于/ etc / nginx / sites-available下的NGINX的“默认”配置文件:
server {
listen 3000;
server_name X.Y.Z;
root /mnt/Files/;
error_log /home/nginx/logs/error.log debug;
access_log /home/nginx/logs/access.log;
client_max_body_size 20M;
location /download/* {
root /mnt/Files/;
access_log on;
autoindex on;
set $var1 = $1
try_files $uri $uri/ =404;
}
location /upload {
proxy_pass http://127.0.0.1:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
我将提交的示例表单将包含以下字段:
用户名:user1 密码:pass1 子文件夹: 档案:
答案 0 :(得分:1)
你不能在nginx配置文件中加入太多逻辑。
首先你需要检索帖子参数。
然后你需要针对像mysql或mongoDB这样的数据库进行验证。
然后返回401(未经授权)。
我不认为nginx可以做到这一切。
我建议将所有这些作为快速静态功能的一部分。
var express = require('express');
var app = express();
var auth = express.basicAuth(function(user,password) {
return 'john' === user && '1234' === password;
});
app.use('/media', auth);//should be before static
app.use('/media', express.static(__dirname + '/media'));