Node.js nginx响应POST请求提供静态文件

Node.js nginx响应POST请求提供静态文件,node.js,bash,nginx,Node.js,Bash,Nginx,我将nginx设置为node.js的反向代理。对于文件上传,我要求NGINX将请求转发到node.js,但对于文件下载,我希望由NGINX完成。我可以使用get请求让它工作 但我确实希望通过POST请求对会话进行身份验证,然后提供文件。请就如何实现这一目标提出建议 以下是我在/etc/NGINX/sites下的NGINX“默认”配置文件: server { listen 3000; server_name X.Y.Z; root /mnt/Files/; erro

我将nginx设置为node.js的反向代理。对于文件上传,我要求NGINX将请求转发到node.js,但对于文件下载,我希望由NGINX完成。我可以使用get请求让它工作

但我确实希望通过POST请求对会话进行身份验证,然后提供文件。请就如何实现这一目标提出建议

以下是我在/etc/NGINX/sites下的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 子文件夹:
文件:

您不能在nginx配置文件中放入这么多逻辑

首先,需要检索post参数

然后需要针对一些数据库(如mysql或mongoDB)验证这一点

然后返回401(未授权)

我不认为nginx可以做到这一切

我建议将所有这些作为ExpressStatic特性的一部分

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'));

谢谢这些例子都会派上用场的。为什么我在这个问题上得了a-1?谢谢!我也这么认为,但希望社区参与进来。