问题标签 [x-accel-redirect]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
django - Serving protected files with Django and Nginx X-accel-redirect
I'm trying to get Nginx and Django to play together to serve downloadable protected files. I just cannot get it to work. Here's my Nginx config:
the relevant urls.py for viewing the file(s):
my view:
I have 2 values in my settings file:
_convert_file_to_url() takes the full file path and, using the two settings values above, turns it into a url that (I thought) Nginx would allow:
So, if I try to access:
In my browser window, it doesn't allow it (404). Good.
BUT - if I try to access that url from a form download, which I want to allow, I get a redirect in the browser to:
and it's a 404 as well.
I've tried so many different configurations my brain now hurts. :-)
Should I not be reading the file with open(), and let Nginx serve it? If I remove that line, it returns a file with the dreaded zero bytes. Why do I still get a 404 on the redirected url??
nginx - Nginx 做一个 proxy_pass 来完成 URL
我的 servlet 正在发送一个带有完整 URL 的 X-Accel-Redirect,例如 /cached/ http://example.com/test/index.html。它必须是完整的 URL,因为我们的业务逻辑决定了资源在网络上的位置。
我希望 nginx 从http://example.com/test/index.html下载内容,并像它来自原始 URL 请求一样提供服务。因此,我不想进行重写(或重定向)。我正在尝试下面提到的conf,但它不起作用。
有什么方法可以使用匹配 URI 中的绝对 URL 并对其执行 proxy_pass 吗?提前致谢。
django - Nginx x-accel-redirec 重定向错误
我正在使用 x-accel-redirec 标头和 Nginx 提供由我的 django 服务器处理的图像。但是,这种行为真的很奇怪,因为有时我得到图像,有时 Nginx 将图像 URI 重定向到我的 Django (uwsgi) 应用程序,当然,我得到一个 404。我的配置如下:
当我多次刷新时,相同的 URL 会发生这种行为。当我从 Django 收到 404 错误消息时,它说:“当前 URL,home/bob/images/image3.jpg,与这些都不匹配。”
在带有 mod_xsendfile 的 apache 中,它运行良好。请帮忙
django - 使用 nginx、django 下载文件
我目前正在编写一个使用 nginx 服务的小型个人使用网站,使用 uwsgi、django 和 bootstrap。一切都很顺利,除了一个我无法弄清楚的问题。我在网站上有下载链接(按钮),点击后应该会启动文件下载。这是按下按钮时执行的视图:
/media/files 直接由 nginx 作为内部位置提供服务:
如何使用分配给每个按钮的 onclick 事件调用此视图:
我有一个带有单个隐藏字段的表单。这被设置为按下的按钮的 id (uuid)。
很简单吧?我的问题是,当按下下载按钮时,下载没有正确启动。用户不会收到保存对话框提示,文件也不会开始自动下载(Chrome 或 Safari)。相反,在调试工具中,我可以看到文件下载到浏览器中的本地存储或某个内存位置(这些是大文件;> 1GB)。我看到内存在膨胀,最终浏览器会崩溃。任何线索我在这里做错了什么?根据我一直在阅读的内容,这应该可以正常工作。
ruby-on-rails - Rails 应用程序的 Nginx X-Accel-Redirect 配置
在为 nginx 设置 X-Accel-Redirect 的所有教程中,总是有一些关于指示某个位置是私有的,如下所示:
我发送给用户的文件位于 RAILS_ROOT/private_uploads 中。这不在公用文件夹内,这意味着没有直接指向此文件夹中文件的 URL。
那么我是否正确假设我可以忽略我的设置的那一点 nginx 配置?如果没有,我需要什么配置?
我正在使用Passenger,顺便说一句,我的配置非常基本:
node.js - Nginx X-Accel-Redirect 不适用于 node.js
我正在尝试在由 node.js 支持的 nginx 上设置授权文件访问。出于某种原因,所有示例都不适合我。我正在尝试从/data/private/files
我的 nginx 配置:
我的节点 server.js:
当我请求时http://localhost:4000/xyz
,请求被正确传递到节点。当我请求时,http://localhost:4000/files/test.jpg
我只得到一个 404 并且没有任何东西传递给节点。我究竟做错了什么?当我推荐时internal
,test.jpg 直接由 nginx 正确提供,所以我假设路径是正确的?
我很确定我之前在某个时候有过这个工作,但是在某个不同的服务器上可能有不同的节点和 nginx 版本。尝试使用 nginx 1.6.0 和 1.2.6,节点 v0.10.21。我还添加了您在所有示例中找到的所有 proxy_set_header 和 proxy_pass 选项,但没有任何效果。我现在正在基于 Vagrant 的 Ubuntu VM 中运行它,但也不能在 Mac 上运行。
我知道我必须通过 设置标头res.setHeader("X-Accel-Redirect", req.url);
,但这不是这里的问题,因为我什至没有进入可以在 node.js 中设置所需标头的阶段。
php - Nginx:X-Accel-Redirect 不适用于具有已知 MIME 扩展名的文件
我正在开发一个 webapp,X-Accel-Redirect 标头仅在没有扩展名的文件中工作正常。出于某种原因,如果我为文件名添加扩展名,则 X-Accel-Redirect 不起作用。
工作示例:
非工作示例:
我正在使用 nginx 1.7.1。
最初,奇怪的部分是,如果我用 mime.types 文件中未注册的内容更改扩展名部分(在本例中为“.zip”),它可以正常工作(显然我相应地重命名了文件),但扩展名指向知道 mime 类型(例如“zip”、“jpg”、“html”)将生成“404 Not found”错误。
更新: 问题似乎是由于我在 conf 文件中的这条规则:
出于某种原因,似乎 nginx 先测试文件系统中文件的存在,然后再尝试“内部/别名”路径。
关于如何让 nginx 过滤来自 X-Accel-Redirect 的所有“/protected_files”直接到“内部”而不是先尝试在其他路径中查找的任何想法?
提前致谢。
ruby-on-rails - 将自定义 HTTP 标头添加到 nginx X-Accel-Redirect
我正在使用X-Accel-Redirect
nginx 在 Rails 中提供受限下载。为了验证我在客户端应用程序中的下载,我尝试将非标准 HTTP 标头中的校验和发送Content-MD5
到X-Accel-Redirect
请求。但这不起作用。
在用于进行重定向的 rails 片段下方
这是 nginx 部分
这显然不起作用。我无法在回复中获取 Content-MD5 标头。有什么方法可以从 Rails 传递我的 Content-MD5 标头吗?
我知道有一些方法可以完全在 nginx 中做到这一点,比如用 perl 或 lua 编译 nginx 并轻松计算 MD5。但我不想那样做。
任何帮助深表感谢。
php - 带有正则表达式内部位置的 nginx X-Accel-Redirect 导致 301
我对 nginx 有下一个问题。我设置了代码来提供安全文件。这是重定向请求的 PHP 代码:
和 check_url 函数:
然后我有这样的nginx配置:
这一切都有效。但我尝试了更好的(对我而言)配置,我可以在配置中为不同的文件类型设置单独的目录:
对http://unexisting.com/file/....../54agda0g8.flv的请求将我重定向到http://unexisting.com/film/54agda0g8.flv/
天哪,为什么?如果您需要现场示例,请告诉我。