Django Nginx X-Accel-Redirect 用于 Webfaction 上受保护的文件

2024-02-13

如果你想折磨某人直到时间结束,只需让他们配置 Django 和 Nginx X-Accel-Redirect 即可。这实际上是不可能的,我已经尝试了很多天了。

我试图只允许在 webfaction 上使用 Nginx 从 django 中的登录视图下载某些文件。这是我所拥有的:

自定义 Nginx 应用程序侦听 /static 下的端口 27796。这是会议。

http {
include       mime.types;
default_type  application/octet-stream;
sendfile        on;
keepalive_timeout  65;
server {
    listen       27796;
    server_name  myurl.com;
    root /home/ucwsri/webapps/static_media_ucwsri_nginx; 

    location / {
        autoindex on;
    }

    location ^.*/protected-files {
        internal;
        alias /home/ucwsri/webapps/static_media_ucwsri_nginx/protected;
    }

所有静态内容都位于 /home/ucwsri/webapps/static_media_ucwsri_nginx 中,并且由该 Nginx 应用程序正确提供服务。

我想要保护的文件在这里:

/home/ucwsri/webapps/static_media_ucwsri_nginx/protected

这是 Nginx 中位置 ^.*/protected-files 块下列出的别名。

该视图只是简单地生成一个 Http 响应:

response = HttpResponse()
url = "/static/protected-files/some-file.pdf"
response['X-Accel-Redirect'] = url

return response

“some-file.pdf”文件存在于的位置

/home/ucwsri/webapps/static_media_ucwsri_nginx/protected

无论我尝试什么,当我尝试以 POST 请求的形式获取该文件并转到该视图时,我都会从 Nginx 收到 404 错误。我已经尝试了我能想到的一切,每个位置组合块,都不起作用。始终是 404。

请有人让我摆脱痛苦并告诉我我做错了什么。对于看似简单的事情来说,这确实是残酷的。


首先,你的location ^.*/protected-files纯属无稽之谈。我想,你已经错过了~修饰符,但即使在这种情况下它也是无用的。

第二,你没有保护好/protected/文件夹。直接请求至/protected/some-file.pdf将在没有任何保护的情况下下载该文件。

第三,你有/static/protected-files/some-file.pdf in X-Accel-Redirect,但你没有提到任何static之前的文件夹。

所以,我建议以下配置:

server {
    listen       27796;
    server_name  myurl.com;
    root /home/ucwsri/webapps/static_media_ucwsri_nginx; 

    location / {
        autoindex on;
    }

    location ^~ /protected/ {
        internal;
    }

django 应该是:

response = HttpResponse()
url = "/protected/some-file.pdf"
response['X-Accel-Redirect'] = url

return response

Summary:

  • 保护真实文件夹。
  • X-Accel-Redirect是 URI,只需将其想象为用户将该 URI 放入浏览器地址栏中即可。唯一的区别是internal将允许访问X-Accel-Redirect同时禁止用户从浏览器直接访问。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django Nginx X-Accel-Redirect 用于 Webfaction 上受保护的文件 的相关文章

  • 如何将 max_length 添加到 allauth 用户名

    我使用 Django allauth 作为我的 Django 站点的用户帐户框架 文档显示有一个ACCOUNT USERNAME MIN LENGTH http django allauth readthedocs io en latest
  • Google App Engine Flexi 上 Django 的 Postgres 设置

    我正在尝试在应用程序引擎灵活环境中使用 postgres 设置 django 我按照这里的说明进行操作 https cloud google com appengine docs flexible python using cloud sq
  • 如何覆盖 Django 的默认管理模板和布局

    我正在尝试覆盖 Django 的默认模板 现在只有base site html 我正在尝试更改 django 管理文本 我做了以下事情 我在我的应用程序目录中创建了一个文件夹 opt mydjangoapp templates admin
  • Python Django-如何从输入文件标签读取文件?

    我不想将文件保存在我的服务器上 我只想在下一页中读取并打印该文件 现在我有这个 index html
  • 如何在 Django 中使每五个帖子成为广告帖子

    我正在尝试允许用户赞助帖子 以便为该帖子带来更多点击量 我想让每五个帖子成为赞助帖子 但如果我尝试在模板中使用可整除并循环浏览广告 那么它将发布all第四个帖子后的广告 这是我尝试过的一些代码 编辑 我已将问题更改为不会显示帖子的问题 有人
  • 连接被拒绝:当uwsgi和nginx在不同容器中时

    我正在尝试设置两个 docker 容器 是的 无需 docker compose 分开 一个带有 nginx 另一个带有带有基本 Flask 应用程序的 uwsgi 我在 docker 内的同一网络中运行容器我的 nginx 配置已添加 链
  • 如何在 Django QuerySet 中将 DateField() + TimeField() 转换为本地时间?

    我的模型为这些字段 date models DateField 开始时间 models TimeField 结束时间 models TimeField 我想用以下方式注释查询集start datetime and end datetime
  • 在 django 1.7 上的数据迁移中,直到原子块结束后才能执行查询

    我有一个相当长的数据迁移 我正在执行此操作来纠正早期的错误迁移 其中某些行创建不正确 我试图根据旧列将值分配给新列 但是 有时这会导致完整性错误 发生这种情况时 我想扔掉导致完整性错误的那个 这是一个代码片段 def load data a
  • Django 选择性转储数据

    是否可以有选择地过滤哪些记录Django的dumpdata管理命令输出 我有几个模型 每个模型都有数百万行 我只想转储一个模型中符合特定条件的记录 以及引用任何这些记录的所有外键链接记录 考虑这个用例 假设我有一个生产数据库 其中我的用户模
  • 更新序列化器时,嵌套序列化器没有实例(many = true)

    我有 UserSerializer 和嵌套的 UserClientSerializer 我正在尝试更新已登录用户的信息 但我收到 unique together 验证错误 我有以下型号 模型 py class UserClients mod
  • Django、模板、for 循环和循环

    tl 博士在底部 让我尝试解释一下我想要完成的任务 我有一个二维数组 我想以某种方式显示其内容 我想要 行 并且每行只能显示不超过三个 对象 因为缺乏更好的词 所以我想迭代该数组并在此过程中创建 HTML 我的想法是这样的 数组中的每个 三
  • Django:使用条件 {% extends %} 使 {% block "div" %} 成为条件

    我想分享一个 AJAX 和常规 HTTP 调用之间的模板 唯一的区别是一个模板需要扩展 base html html 而另一个则不需要 我可以用 extends request is ajax yesno app base ajax htm
  • 如何使用Python在Django for Windows中激活虚拟环境?

    我被告知要在 Django for Windows 中激活虚拟环境 我应该尝试 environment path Scripts activate 但是当我输入该命令时 cmd 返回此错误 该系统找不到指定的路径 我通过输入以下命令创建了虚
  • 在 Python/Django 中将用户的 facebook/twitter 好友与网站用户进行比较

    我想知道是否有人可以帮助指导解决这个相当常见的问题的方法 我正在构建一个简单的网站 用户可以连接他们的 Twitter 帐户进行注册 我想创建一个界面 向他们显示哪些推特好友已经在使用该网站 因此 我可以获得用户的 Twitter 朋友列表
  • Django 模型:默认日期时间未转换为 SQL CURRENT_TIMESTAMP

    我正在使用 Django 模型创建 PostgreSQL DB 我有一个 DateTimeField 我想将当前时间戳设置为默认值 我知道有多个消息来源建议如何做到这一点 但是 当我在 Django 之外检查数据库时 默认时间戳不会显示 我
  • Pickle django 查询?

    是否可以在数据库中腌制或以某种方式存储 django 查询 这是行不通的 u User objects all import cPickle pickled query cPickle dumps u and store the pickl
  • 如何将自定义管理器与相关对象一起使用?

    我有一个定制经理 我想将它用于相关对象 我发现用于相关字段 https docs djangoproject com en dev topics db managers controlling automatic manager types
  • 用于渲染 html 子集的 Django templatetag

    我有一些 html 在本例中是通过 TinyMCE 创建的 我想将其添加到页面中 但是 出于安全原因 我不想只打印用户输入的所有内容 有谁知道模板标签 最好是过滤器 只允许呈现 html 的安全子集 我意识到 Markdown 和其他人就是
  • Django 多对多关系(类别)

    我的目标是向我的 Post 模型添加类别 我希望以后能够按不同类别 有时是多个类别 查询所有帖子 模型 py class Category models Model categories 1 red 2 blue 3 black title
  • 无需访问 Internet 即可部署 Django 的简单方法?

    我拥有的是使用 Django 开发的 Intranet 站点的开发版本以及放置在 virtualenv 中的一些外部库 它运行良好 我可以在任何具有互联网连接的计算机上使用相同的参数 使用 pip 轻松设置 virtualenv 但是 不幸

随机推荐

  • Sharepoint 维基

    好吧 我看过几个帖子mention其他一些关于不使用 SP wiki 的帖子 因为它们很糟糕 因为我们正在考虑创建我们的维基inSP 我需要知道为什么我们不应该让 6 名自动化开发人员组成的小组来记录各种自动化流程中的步骤以及必须不时进行的
  • 如何在图表中添加大括号?

    我想在R中制作如下图 如何绘制水平支撑 像这样的事情怎么样 plot c 0 1 c 0 1 text x 0 5 y 0 5 srt 90 cex 8 family Helvetica Neue UltraLight 根据您的目的进行调整
  • Socket.io + PhoneGap

    当我尝试使用时套接字IO https socket io with PhoneGap https phonegap com 我收到此错误 在 iOS 上应该支持 socket io Access Control Allow Origin 不
  • NSArray 填充 bool

    我正在尝试创建一个布尔值的 NSArray 请问我有多少人这样做 NSArray array NSArray alloc init array 0 YES 这对我不起作用 Thanks NSArray 不是 c 数组 您无法使用以下方式访问
  • ModelEntity.从 url 加载

    我有一个带有 AR 的屏幕 目前 usdz 3D 模型存储在应用程序本地 我们需要确保使用 get 请求接收它们 这是要检查的网址 https developer apple com augmented reality quick look
  • SQL 选择用字符串替换整数

    目标是将 SQL 查询中返回的整数值替换为该数字表示的 char 值 例如 标记为 Sport 的表属性被定义为 1 4 之间的整数值 1 篮球 2 曲棍球等 下面是数据库表 然后是所需的输出 数据库表 Player Team Sport
  • -webkit-transform 的替代方案:transformY?

    我正在创建一个 chrome 扩展 它在特定页面的顶部显示 iframe 该 iframe 被固定并放置在打开 body 标签之前 为了给这个 iframe 预留一个位置 我使用 CSS 向下移动主体 包括固定元素 webkit trans
  • AngularJS 中 !$pristine 与 $dirty 之间有什么区别

    最近我读了一些关于 angularJS 表单验证的教程 如下所示 p p 但我觉得 pristine and dirty是相等的 那么我可以使用下面的吗 p p 我认为这两个属性之间存在细微差别 这取决于您的用例 setDirty 将表单设
  • 如何获取node.js中的所有memcached数据?

    首先 我的目的是当用户关闭浏览器时用户会话数据应该过期 现在的问题是 我的服务器需要 memcached 才能正常工作 因此 我想从已关闭浏览器的 memcached 中删除该特定用户会话 我不想清除所有内存缓存 以便剩余用户的会话仍然存在
  • nvcc 和 NVIDIA-smi 显示的不同 CUDA 版本

    我对运行时显示的不同 CUDA 版本感到非常困惑which nvcc and nvidia smi 我在 ubuntu 16 04 上安装了 cuda9 2 和 cuda10 现在我将PATH设置为指向cuda9 2 所以当我跑步时 whi
  • 如何在 ASP.NET 应用程序中实现多语言服务器错误?

    我的 ASP NET Web 应用程序在 web config 中有以下部分
  • 从 Laravel 外部推送到 Laravel 队列 (NodeJS)

    我有一个 Laravel 5 3 安装作为纯 API 应用程序运行 需要从多个不同的应用程序进行连接 一切都工作正常 毕竟我们谈论的是 Laravel P 除了我不明白一件事 我有一个 MQTT 服务器 它正在侦听来自多个设备的消息 无论是
  • Node.js 的 Liquid 模板 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有谁知道有没有港口液体模板 https github com tobi liquid对于 Node j
  • Logstash:Mutate { gsub ... } 不起作用

    mutate add field gt eee gt 2016 uaie gsub gt eee 2016 2015 这确实会创建一个字段 eee 但 gsub 会not更新它 为什么 add field 在底层过滤器成功时运行 在您的情况
  • 计算 DFFITS 作为回归中杠杆率和影响力的诊断

    我正在尝试手动计算 DFFITS 获得的值应该等于通过以下方式获得的第一个值dffits功能 不过我自己的计算肯定有问题 attach cars x1 lt lm speed dist data cars all observations
  • Firefox 是否有相当于 Chrome 的“translateZ(0);”强制GPU加速CSS动画?

    我有一个 CSS3 过渡 在 Chrome 中如丝绸般平滑 但在 Firefox 最新版本 中却不稳定 我知道我可以通过设置在 Chrome 中强制 GPU 加速 DOM 对象 webkit transform 翻译Z 0 on it 我可
  • 理解为什么弗洛伊德的龟兔赛跑算法在应用于整数数组时有效

    我试图解决这个leetcode问题https leetcode com problems find the duplicate number https leetcode com problems find the duplicate nu
  • 无法在 Windows 上使用 Redis 绑定 TCP 侦听器 *:6379

    我在 Windows 上使用 Redis 2 8 这是我从 github 版本下载的 解压后 我设置了 maxheapredis windows conf文件 运行后redis server redis windows conf I get
  • FFMpeg - 添加背景音乐

    这是我所拥有的 input1 avi 包含声音的视频 input2 avi 不包含声音的视频 music mp3 音频文件 我想向视频添加背景音乐 music mp3 文件 C input1 avi i C music mp3 shorte
  • Django Nginx X-Accel-Redirect 用于 Webfaction 上受保护的文件

    如果你想折磨某人直到时间结束 只需让他们配置 Django 和 Nginx X Accel Redirect 即可 这实际上是不可能的 我已经尝试了很多天了 我试图只允许在 webfaction 上使用 Nginx 从 django 中的登