当前位置: 首页 > news >正文

Nginx + PHP 8.0支持视频上传

在 Ubuntu 20.04 上配置 Nginx + PHP 8.0 的架构以支持视频上传,需要从 Nginx 和 PHP 两个方面进行配置,以确保服务器能够处理大文件上传。以下是详细的步骤:

1. Nginx 配置

1.1 增加上传文件大小限制

默认情况下,Nginx 对上传文件的大小有限制。你需要增加这个限制来允许上传更大的文件,例如视频文件:

http {...client_max_body_size 1G;  # 设置最大上传文件大小为1GB...
}
1.2 配置超时时间

上传大文件可能需要更多的时间,因此你需要增加相关的超时时间:

http {...client_body_timeout 120s;  # 设置上传超时时间为120秒send_timeout 120s;         # 设置发送超时时间为120秒keepalive_timeout 120s;    # 设置保持连接超时时间为120秒...
}
1.3 调整缓冲区大小

缓冲区的大小影响文件上传的性能,可以根据服务器的资源和文件大小调整这些缓冲区大小:

http {...client_body_buffer_size 256k;   # 调整请求体的缓冲区大小client_header_buffer_size 1k;   # 调整请求头的缓冲区大小large_client_header_buffers 4 32k; # 调整大请求头的缓冲区大小...
}
1.4 启用分块传输

对于非常大的文件,使用分块传输可以优化上传过程:

http {...chunked_transfer_encoding on;    # 启用分块传输编码...
}

2. PHP 配置

2.1 增加 upload_max_filesizepost_max_size

在 PHP 中,你需要配置 upload_max_filesizepost_max_size 来支持大文件上传:

打开 PHP 配置文件(通常位于 /etc/php/8.0/fpm/php.ini/etc/php/8.0/cli/php.ini),找到并修改以下参数:

upload_max_filesize = 1G   # 设置最大上传文件大小为1GB
post_max_size = 1G         # 设置最大POST数据大小为1GB
2.2 增加 max_execution_timemax_input_time

确保 PHP 脚本有足够的时间来处理上传的文件:

max_execution_time = 300    # 设置脚本最大执行时间为300秒
max_input_time = 300        # 设置输入数据的最大处理时间为300秒
2.3 增加 memory_limit

为了确保 PHP 有足够的内存来处理上传的大文件,你可以增加 memory_limit

memory_limit = 512M         # 设置脚本可使用的最大内存为512MB

3. Nginx 与 PHP-FPM 的连接配置

确保 Nginx 正确配置为使用 PHP-FPM 处理 PHP 请求。常见的配置示例:

server {listen 80;server_name example.com;root /var/www/html;index index.php index.html index.htm;location / {try_files $uri $uri/ /index.php?$query_string;}location ~ \.php$ {include snippets/fastcgi-php.conf;fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}location ~ /\.ht {deny all;}
}

4. 重启服务

在完成以上配置后,需要重启 Nginx 和 PHP-FPM 服务以使配置生效:

sudo systemctl restart nginx
sudo systemctl restart php8.0-fpm

5. 检查上传目录权限

确保上传的目录有适当的写入权限,以便 PHP 能够保存上传的文件:

sudo chown -R www-data:www-data /path/to/upload/directory
sudo chmod -R 755 /path/to/upload/directory

6. 测试上传功能

通过在你的项目中进行视频上传测试,确保一切工作正常。

**

在使用 HTTPS 的情况下,上述配置仍然有效,但你需要进行额外的配置来确保 HTTPS 环境下的上传和下载过程顺畅、安全。以下是需要注意的 HTTPS 相关配置:

**

1. SSL 证书配置

确保你的 Nginx 服务器已经配置了有效的 SSL 证书,并且 HTTPS 已正常工作。通常,你会在 Nginx 的配置文件中定义 SSL 相关的参数:

server {listen 443 ssl;server_name example.com;ssl_certificate /etc/nginx/ssl/example.com.crt;ssl_certificate_key /etc/nginx/ssl/example.com.key;ssl_protocols TLSv1.2 TLSv1.3;ssl_prefer_server_ciphers on;ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;...
}

2. 增加 HTTPS 的缓冲区大小

当使用 HTTPS 时,数据传输是加密的,可能会导致更高的资源消耗。你可以调整以下配置以优化 HTTPS 下的大文件传输:

server {...ssl_buffer_size 1400;  # 调整 SSL 缓冲区大小,适应较大文件传输...
}

3. 优化 HTTPS 下的超时时间

为了处理大文件上传,尤其是在 HTTPS 下,确保超时时间配置适当:

server {...client_body_timeout 120s;  # 上传超时时间send_timeout 120s;         # 发送超时时间keepalive_timeout 120s;    # 保持连接超时时间...
}

4. 启用 HTTP/2(可选)

HTTP/2 提供了更高效的数据传输方式,特别是在 HTTPS 下。你可以通过在 Nginx 配置中启用 HTTP/2 来优化上传和下载性能:

server {listen 443 ssl http2;  # 启用 HTTP/2 支持...
}

5. 确保上传配置仍然有效

上述与上传相关的配置(如 client_max_body_size 和 PHP 的 upload_max_filesize 等)在 HTTPS 环境下依然有效。你不需要修改这些配置,只需确保它们与 HTTPS 配置兼容。

6. 防火墙和安全配置

确保防火墙允许 HTTPS 流量(通常是 TCP 443 端口),并且没有限制可能影响上传的流量。你还可以启用 Nginx 的防火墙模块或其他安全措施以增强 HTTPS 上传的安全性。

7. 测试 HTTPS 下的视频上传

完成配置后,通过 HTTPS 测试你的上传功能,确保文件上传、传输速度和安全性都符合预期。

8. 重启服务

再次确认所有配置无误后,重启 Nginx 和 PHP-FPM 服务:

sudo systemctl restart nginx
sudo systemctl restart php8.0-fpm

总结

在 HTTPS 环境下,上述的上传配置仍然适用,你只需在 Nginx 中添加和优化 SSL 配置、考虑启用 HTTP/2 并确保其他 HTTPS 相关设置都适当配置。通过这些配置,服务器应该能够安全、高效地处理视频上传任务。

相关文章:

Nginx + PHP 8.0支持视频上传

在 Ubuntu 20.04 上配置 Nginx PHP 8.0 的架构以支持视频上传,需要从 Nginx 和 PHP 两个方面进行配置,以确保服务器能够处理大文件上传。以下是详细的步骤: 1. Nginx 配置 1.1 增加上传文件大小限制 默认情况下,Nginx 对上传文…...

MySQL基础详解(3)

文章目录 索引普通索引创建索引修改表结构(添加索引)创建表的时候直接指定删除索引的语法 唯一索引创建索引修改表结构创建表的时候直接指定 使用ALTER 命令添加和删除索引使用ALTER 命令添加和删除主键显示索引信息 约束非空约束:唯一约束:主键约束&…...

傅里叶变换结合数学形态学进行边缘增强和边缘提取

一、前言 傅里叶变换是图像变换的一种常用方法,傅里叶变换在图像处理中扮演着核心角色,它通过将图像从空间域转换到频率域,获取图像的频率成分,因为有些特征在空间域很难处理,但在频率域比较容易处理。这一转换有助于分…...

Haproxy的ACL介绍及应用实例

一、ACL介绍 访问控制列表ACL,Access Control Lists) 是一种基于包过滤的访问控制技术 它可以根据设定的条件对经过服务器传输的数据包进行过滤(条件匹配)即对接收到的报文进行匹配和过 滤,基于请求报文头部中的源地址、源端口、目标地址、目…...

final finally finalize 区别?

final: final 是一个修饰符,可以用于类、方法和变量。当final修饰类时,表示该类不能被继承。当final修饰方法时,表示该方法不能被子类覆盖(重写)。当final修饰变量时,表示该变量是一个常量,其值…...

C语言常用的内存函数

在上一篇博客中我为大家分享了一些常用的字符串函数,以及它们的用法和模拟实现。通过字符串函数中的strcpy,我们能够做到将一个字符串中的内容拷贝到另一个字符串上,可如果有一天我们想把一个整型数组中的内容拷贝到另一个整型数组中呢&#…...

MP4 H.264 MPEG-4 MPEG-2

MP4 视频编解码技术 H.264 MPEG-4 MPEG-2 MP4 (MPEG-4 Part 14): Format: A digital multimedia container format.Use: Often used to store video, audio, subtitles, and still images.Compression: Can use different codecs, such as H.264, for video compression. H.264…...

nvm 切换、安装 Node.js 版本

nvm下载路径 往下拉找到Assets 下载后,找到nvm-setup.exe双击,一直无脑下一步,即可安装成功。 配置环境变量(我的是window11) 打开任务栏设置–搜环境变量 配置好后,点确定一层一层关闭 windowR 打开控制…...

基于区块链的合同存证应用开发

基于区块链的合同存证应用开发 任务一:环境准备 1.启动区块链网络 目录: /root/xuperchain/output/ 启动区块链网络 bash constrol.sh start2.创建钱包账户 目录: /root/xuperchain/output/ 创建tenant, landlord钱包账户,命令如下: bin/xchain-cli account newke…...

每日一题~ abc 365 E 异或运算(拆位+贡献)

处理位运算常用的方法: 拆位法(一位一位的处理,通常题目中会给出元素的最大是2的的多少次幂,当然也有给10的次幂的,自己注意一下就可以了) 常用的思想 : 算贡献。 异或的性质: A^A0 …...

前端八股文笔记【三】

JavaScript 基础题型 1.JS的基本数据类型有哪些 基本数据类型:String,Number,Boolean,Nndefined,NULL,Symbol,Bigint 引用数据类型:object NaN是一个数值类型,但不是…...

AI学习记录 - transformer的Embedding层

创作不易,免费的赞 前面有介绍了GPT2如何进行token化的过程,现在讲下transformer的Embedding层 Embedding层就是一个巨大的矩阵,边长分别是词汇表长度和词向量维度,矩阵里面的每一个数字都是一个随机初始化的,或者是…...

23-PCB封装名称的统一添加与管理

1.进入封装管理器 2. 选择对象,点击右侧添加按钮 3. 搜索所需要的封装 4.接受创建变更 5.执行变更 6.关闭...

【Python从入门到进阶】62、Pandas中DataFrame对象案例实践

接上篇《61、Pandas中DataFrame对象的操作(二)》 上一篇我们讲解DataFrame对象的统计分析、可视化以及数据导出与保存相关内容。本篇我们延续之前学习的DataFrame对象的知识,结合一个数据案例进行实践操作。 一、案例说明 我们将通过一个股…...

使用Python实现深度学习模型:智能环境监测与预警

介绍 智能环境监测与预警是保护生态环境和人类健康的重要手段。通过深度学习技术,我们可以实时获取环境数据,分析环境变化趋势,及时发出预警。本文将介绍如何使用Python和深度学习库TensorFlow与Keras来构建一个简单的环境监测与预警模型。 环境准备 首先,我们需要安装必…...

ThreadLocal的使用场景是什么

ThreadLocal 是 Java 中用于实现线程局部变量的工具,它提供了每个线程独立的变量副本,使得不同线程对该变量的操作不会相互干扰。以下是 ThreadLocal 的常见使用场景: 线程安全的对象共享: ThreadLocal 可以用来避免线程间共享状…...

【网络爬虫篇】逆向实战—某东:滑块验证码(逆向登录)2024.8.7最新发布,包干货,包详细

【网络爬虫篇】更多优秀文章借鉴: 1. 使用Selenium实现黑马头条滑块自动登录 2. 使用多线程采集爬取豆瓣top250电影榜 3. 使用Scrapy爬取去哪儿网游记数据 4. 数据采集技术综合项目实战1:国家水稻网数据采集与分析 5. 数据采集技术综合项目实战2&#x…...

为什么优质的酱香白酒都会带点苦味?

大家好,我是酱酒亮哥,不知大家有没有发现,在制作一杯美味的咖啡或是烘焙一块香脆的面包时,制作过程中都会有一些独特的味道和香气产生,对吧?同样地,酱香白酒的酿造过程也是一个复杂而精细的化学…...

软件测试常见面试题

软件测试阶段分为单元测试,集成测试,系统测试,验收测试。单元测试策略为对代码中的函数方法进行测试,目的是发现代码的问题。集成测试策略是模块中组合起来进行测试,要求发现与接口有关的问题。系统测试策略是子系统的…...

面试经典算法150题系列-接雨水

接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...