标签: upload

使用 nginx 防止大文件上传

我使用 Nginx 作为网络服务器来为我的网站提供服务。我向我的用户提供上传功能(允许他们提交最大 5Mb 的图片),因此我有指令:client_max_body_size 5M;在我的服务器配置中。我注意到,如果我尝试上传任何文件,网络服务器不会阻止上传更大的文件。举个例子,假设我尝试上传一个 700Mb 的大视频(电影)。服务器不会立即拒绝上传,但它会缓冲整个数据(花费很长时间并减慢服务器速度),并且仅在上传结束时才返回错误413 Request entity too large

所以问题是:有没有办法正确配置Nginx,以在传输的数据开始超过我的client_max_body_size限制时阻止大文件上传?

我认为使用我的实际设置进行生产确实不安全,而且我在谷歌上找不到任何有用的东西。

编辑:

我使用 php 和 Symfony2 作为后端......

编辑(再次):

这是我的 error.log 中出现的内容:

2013/01/28 11:14:11 [error] 11328#0: *37 client intended to send too large body: 725207449 bytes, client: 33.33.33.1, server: www.local.example.com, request: "POST /app_dev.php/api/image/add/byuploader HTTP/1.1", host: "local.example.com", referrer: "http://local.example.com/app_dev.php/"`
Run Code Online (Sandbox Code Playgroud)

奇怪的是,我正在监视我的 nginx error.log,并且tail -f error.log在上传开始时(在结束之前)立即出现该消息。所以 nginx 会进行某种预防性检查,但它不会停止/分块上传请求......

我还尝试通过在处理上传的页面上发出 a 来验证 php 是否获得上传的控制权echo 'something'; die();,但它没有打印出任何内容,也没有停止上传请求。所以应该是nginx或一些php内部使整个上传继续,直到完全传输......

另一个编辑:这是我的视图top(监视 nginx 和 …

php nginx limitations upload

5
推荐指数
1
解决办法
6413
查看次数

说服系统管理员文件上传可以吗?

为了尽可能简短:最近我们的系统管理员(因为这种类型的事情应该是这样)引起了我们的注意,我们最新的基于 Web 的项目的要求之一是允许客户执行文件上传。特别是这些将主要是图像和可能的视频[,但我相信你知道,你不能保证上传的确切内容是什么,直到它在服务器上]。

系统管理员有点被推迟了,几乎没有公然地说“不!”。

我熟悉许多关于用户输入、处理上传等的最佳实践,所以我对这个项目的幕后/代码方面非常有信心。我的问题是,是否有任何特定的资源或对话要点可以让我的系统管理员放心?我应该重点向他解释这种事情,如何处理等?

一些问题是潜在的存储空间(我知道需要根据估计的“流行度”乘以估计的文件大小来计算)和托管上传内容的安全问题。

upload

4
推荐指数
1
解决办法
461
查看次数

上传大文件时 Nginx 代理超时

我在使用 Nginx 时遇到了奇怪的行为。就我而言,Nginx 充当 Jetty 的代理。配置如下:

server {
    listen   80;
    client_header_timeout 3m;
    client_body_timeout 3m;
    send_timeout 3m;
    client_max_body_size 5M;
    server_name test.com www.test.com
    location / {
         auth_basic     "Restricted area";
         auth_basic_user_file   /etc/nginx/htpasswd;
         proxy_pass        http://localhost:8080;
         proxy_set_header  X-Real-IP $remote_addr;
         proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header  X-Forwarded-Proto http;
         proxy_set_header  X-Real-IP $remote_addr;
         proxy_set_header  Host $http_host;
         gzip on;
    }
}
Run Code Online (Sandbox Code Playgroud)

上传大小大于 5M 的文件时,出现“网关超时”。CPU 使用率为 0%。我不知道出了什么问题。它与网络速度无关,因为我正在本地测试。

如果我跳过代理并尝试直接将文件上传到应用程序服务器(我的意思是:在端口 8080 上),一切都像魅力一样。

任何的想法 ??问候!

nginx timeout upload

4
推荐指数
2
解决办法
2万
查看次数

如何使用网络浏览器上传到 WebDAV?

我已经使用以下教程在 debian 上设置和配置了 webdav:

http://www.unix-tutorials.com/go.php?id=3711

我希望能够使用 Web 浏览器将文件下载并上传到 webdav 共享。如果我将文件挂载到我的文件系统,我可以将文件下载并上传到 webdav 共享,但我们不希望其他访问它的人必须这样做。我们希望人们能够在他们的 Web 浏览器中访问 URL,进行身份验证,并在他们的浏览器中执行所有操作、下载、上传。

当我在浏览器中转到 webdav URL 并进行身份验证时,我会得到一个 webdav 共享内容列表,我可以下载文件,但看不到任何上传文件的方法?如何使用 Web 浏览器将文件上传到 webdav 共享?

提前致谢。

debian webdav upload

3
推荐指数
1
解决办法
1万
查看次数

将更新推送到实时服务器...... FTP 并没有削减它......更好的方法?

我是 2 人团队的首席开发人员。我的合作伙伴刚刚加入该项目,尽管使用 GIT 进行版本控制等,但在代码部署方面,我们仍然陷于黑暗时代。

目前,我使用 Filezilla 通过 FTP 进行所有站点更新(这样我可以控制/负责所有上线的内容)。

我已经这样做了多年,但我们现在有一些大型 PHP 类 (300KB) 和大量流量。

简而言之,例如,每次我上传关键类“常规”时,站点都会关闭,直到文件上传完成。这一次只有 5/6 秒,但这越来越令人无法接受。

我意识到我可以以不同的名称上传文件,然后重命名这两个文件......但真的必须有更好的方法吗?

我听说过从另一台服务器同步代码,但我不知道这如何防止在上传时切换到新文件。

我们只有一台服务器(用于 DB 和 Apache),但也使用了一些云服务器(以 openx 为例)。

deployment ftp upload

3
推荐指数
1
解决办法
153
查看次数

通过 php 将视频文件上传到 IIS 7 失败

我正在尝试让我的网站上传视频和图片。由于我制作了更多上传图片的网站,因此在这方面没有问题,但是当我出于某种原因尝试上传视频时,在$_FILES包含上传图像的数组中找不到它。

我已经在谷歌上搜索并找到了关于 php.ini 文件和包含最大上传大小的 IIS 7 的内容。这些都设置为 1024M:

在 php.ini 中:

max_execution_time = 1000
max_input_time = 1000
memory_limit = 256M
upload_max_filesize = 1024M
post_max_size = 1024M
Run Code Online (Sandbox Code Playgroud)

在 IIS 7 中:

maxAllowedContentLength = 1073741824
maxRequestLength = 1073741824
Run Code Online (Sandbox Code Playgroud)

经过一些测试,看起来很小的视频文件确实可以工作(192KB),但稍大的文件在 $_FILES 数组(11MB)中没有显示任何内容,但真正大的文件(80MB)给出了一个错误:The request filtering module is configured to deny a request that exceeds the request content length.. 问题是我已将其设置maxAllowedContentLength为 1GB。所以这不应该发生?!这张图片如下:

图片

在此处输入图片说明

任何帮助或建议都非常感谢!

php iis-7 upload

3
推荐指数
1
解决办法
3321
查看次数

如何使用 shell 提供程序上传配置文件?

除了在我的客户机上安装 emacs 之类的应用程序外,我还想上传一些配置文件(例如,为 Clojure 开发配置 emacs)。可悲的是,Vagrant 的文档没有提供有关如何执行此操作的线索。我想我必须将配置文件放入共享文件夹,然后将它们从来宾计算机上的共享文件夹复制到所需位置?

files provisioning upload vagrant

3
推荐指数
1
解决办法
4913
查看次数

自动上传到FTP服务器

我有两个本地用户需要扫描文档,然后让他们自动上传到远程终端服务器。我可以设置扫描软件将文件保存到某个文件夹,但我想自动将它们上传到 TS,这样他们就不必离开他们的会话来上传文件。 我可以用来自动上传这些文件的 xp 文件夹观察器是什么?

服务器是 Win 2000,我不确定在 Windows 上通常是如何完成的。我知道我可以将 WinSCP 用作可编写脚本的 ftp 客户端,但我不知道通常使用什么工具来监视文件夹的更改。直觉说Powershell,但我不知道。我的 Python 不够用,我不想在他们的计算机上安装它,但这可能是最后的选择。

---这是我环顾四周时发现的。--- 今天的这个及时线程显示了 Debian Linux 上的一个很好的实用程序(新用户的一个超链接)/questions/50127/how-to-automatically-run-a-script -when-the-contents-of-a-directory-changes-in-lin 这个线程是我在 serverFault 上找到的最接近的线程,但是走错了路。某种来自 FTP 站点的自动下载器?

(META ps 有没有办法删除标签。“上传”有一个标签,应该是“上传”。不需要复数。)

automation ftp upload

2
推荐指数
1
解决办法
5121
查看次数

文件传输替代方案

现在我们正在使用Aspera的企业产品。我们有一个许可证,每个连接仅涵盖 10 兆比特的吞吐量。我们正在考虑从 Aspera 迁移,因为他们的许可成本是让我们达到 100 兆位的杀手。我一直在环顾四周,找不到任何替代方案。现在我们每天传输 500GB 的数据。我更喜欢来自 FOSS 阵营的东西,但我不反对购买基于 Windows 的东西。

为您提供有关我们硬件配置的一些背景知识。

(2) BL495c 刀片服务器 - 2x 6 核 Opterons,128GB RAM,存储全部在 HP MSA2300 FC 阵列上,总共约 10TB 数据。一切都在 Hyper-V Server 2008r2 上运行。

因此,有了所有这些,问题确实是:

您使用什么软件/方法为您的客户提供高速文件上传/下载?

编辑:我主要与生活在 Windows 世界中的非技术最终用户打交道。所以我想要一些基于相当简单的用户前端的浏览器。后端可以根据需要提供技术支持。我认为我唯一真正的要求是大约 100 兆位文件传输的性能、用户配额和可能的连接限制。

file-transfer upload

2
推荐指数
1
解决办法
3867
查看次数

nginx + gunicorn + django中的文件上传和client_max_body_size

我需要配置 nginx + gunicorn 才能在两台服务器中上传大于默认最大大小的文件。

我的 nginx .conf 文件如下所示:

server {
    # ...

    location / {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect   off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme  $scheme;
        proxy_connect_timeout 60;
        proxy_pass http://localhost:8000/;
    }
}
Run Code Online (Sandbox Code Playgroud)

这个想法是允许两个位置的 20M 请求:

  • /admin/path/to/upload?param=value
  • /installer/other/path/to/upload?param=value

我尝试添加location与我在此处粘贴的指令相同级别的指令(获取 404 错误),并尝试将它们添加到location /指令中(获取413 Entity Too Large错误)。

我的位置指令以最简单的形式如下所示:

location /admin/path/to/upload/ {
    client_max_body_size 20M;
}
location /installer/other/path/to/upload/ {
    client_max_body_size 20M;
}
Run Code Online (Sandbox Code Playgroud)

但它们不起作用(实际上我测试了很多组合,我很绝望地想着这个。

请帮助如果可以:我需要设置哪些设置才能使其工作?

非常感谢!

nginx django upload gunicorn

2
推荐指数
1
解决办法
1万
查看次数