我刚开始学习NGINX。但我怀疑NGINX是否会按照我的要求服务。
问题: 在我的网络应用程序中,我正在服务器文件系统上传用户的文档,例如在/ opt / myproject / images目录中。
我需要一种方法来使用NGINX提供用户的文档(像驾驶执照一样保密),但我还需要一种方法来检查该用户是否有权获取此资源。
这是我的要求。 NGINX可以满足我的要求吗?
注意:我的应用服务器是tomcat(在spring boot中构建,我的应用程序以jar文件的形式运行)
还是有更好的方法吗?
注意:我不想在我的应用服务器上加载太多,这就是我使用NGINX的原因
答案 0 :(得分:0)
是的,你可以这样做。您需要做的是使用X-Accel
标头。因此,您将在nginx配置中定义一个块
location /confidential_images {
root /opt/myproject/images;
internal;
}
标记API内部意味着只有nginx才能调用此块。现在,您的代码将获得有关用户应该看到的图像的信息。因此,您将在代码中创建一个用户可以访问的端点,您可以在其中查看可以访问的图像。然后,您可以从代码中返回X-Accel-Redirect
标题
在您的代码中,您将在标题
下面返回X-AccelRedirect: /confidential_images/<path inside images folder>;
然后,Nginx会将其内部重定向到我们定义的内部位置,该图像将是服务器。关键是不要让nginx直接提供图像,而是使用使用应用程序代码控制的内部位置。
详细了解https://www.nginx.com/resources/wiki/start/topics/examples/x-accel/