当我尝试上传超过 2GB 的视频文件时,出现请求实体太大错误。 任何低于 2GB 的内容都可以上传。
我已经在使用 client_max_body_size 并将其设置为 5GB。
这是我的 NGINX 确认文件:
server {
add_header Content-Security-Policy "frame-ancestors 'self';";
add_header X-Frame-Options "SAMEORIGIN";
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;
add_header Cache-control "no-cache,no-store,must-revalidate";
add_header Pragma "no-cache";
add_header Expires "0";
root /var/www/project/path;
index index.html;
server_name _ urlchanged;
#try_files $request_uri $uri$args $uri$args/ $uri $uri/ /index.html =404;
try_files $uri $uri/ /index.html =404;
# file upload fixes
client_max_body_size 5000M;
# proxy_buffer_size 1024k;
# proxy_buffers 4 1024k;
# proxy_busy_buffers_size 1024k;
proxy_request_buffering off;
proxy_max_temp_file_size 10000m;
proxy_connect_timeout 10000;
proxy_send_timeout 10000;
proxy_read_timeout 10000;
send_timeout 10000;
client_header_timeout 10000;
client_body_timeout 10000;
location /api/ {
proxy_pass http://127.0.0.1:3100/;
proxy_connect_timeout 10000s;
proxy_read_timeout 10000s;
proxy_send_timeout 10000s;
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host \$server_name;
proxy_set_header X-NginX-Proxy true;
client_max_body_size 5000M;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/urlchanged; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/curlchanged; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = urlchanged) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name _ urlchanged
listen 80;
return 404; # managed by Certbot
}
我尝试将客户端最大主体大小更改为 500mb,并尝试上传超过 500mb 的视频文件,但它不起作用,并给出了相同的错误,但确认大小为 5GB 时它不起作用。
我的前端 package.json 文件
{
"name": "connect",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo 'No tests'",
"start": "nodemon ./api/bin/www",
"build": "./node_modules/.bin/gulp build",
"dev": "./node_modules/.bin/gulp start"
},
"author": "",
"license": "ISC",
"dependencies": {
"aframe-video-controls": "^0.3.0",
"angular": "^1.6.4",
"angular-animate": "^1.6.4",
"angular-aria": "^1.6.4",
"angular-chart.js": "^1.1.1",
"angular-cookies": "^1.6.4",
"angular-drag-drop": "^3.1.0",
"angular-dragdrop": "^1.0.13",
"angular-google-charts": "^0.1.6",
"angular-loading-bar": "^0.9.0",
"angular-material": "^1.1.4",
"angular-messages": "^1.6.4",
"angular-route": "^1.6.4",
"angular-route-segment": "^1.5.1",
"angular-sanitize": "^1.6.4",
"angular-scroll": "^1.0.2",
"angulartics": "^1.4.0",
"angulartics-google-analytics": "^0.5.0",
"angulartics-google-tag-manager": "0.0.1",
"canvas2image": "^1.0.5",
"ckeditor": "^4.7.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-prettier": "^3.4.0",
"gulp-cli": "^2.3.0",
"handsontable": "^6.2.2",
"html2canvas": "^1.0.0-rc.5",
"lodash": "^4.17.5",
"moment": "^2.24.0",
"ng-file-upload": "^12.2.13",
"ng-handsontable": "^0.13.0",
"ngstorage": "^0.3.11",
"nosleep.js": "^0.9.0",
"oclazyload": "^1.1.0",
"prettier": "^2.3.1",
"ui-cropper": "^1.0.4",
"zxcvbn": "^4.4.2"
},
"devDependencies": {
"eslint": "^7.16.0",
"eslint-config-airbnb": "^18.2.1",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-jsx-a11y": "^6.4.1",
"@babel/core": "^7.4.5",
"@babel/preset-env": "^7.4.5",
"babel-polyfill": "^6.26.0",
"gulp": "^4.0.2",
"gulp-angular-templatecache": "^3.0.0",
"gulp-babel": "^8.0.0",
"gulp-clean-css": "^4.0.0",
"gulp-concat": "^2.6.1",
"gulp-htmlmin": "^5.0.1",
"gulp-if": "^2.0.2",
"gulp-ignore": "^2.0.2",
"gulp-less": "^4.0.1",
"gulp-order": "^1.2.0",
"gulp-rename": "^1.2.2",
"gulp-sourcemaps": "^2.6.5",
"gulp-strip-comments": "^2.5.2",
"gulp-uglify": "^3.0.0",
"gulp-util": "^3.0.8"
}
}
后端的package.json文件:
{
"name": "project-api",
"version": "3.0.1",
"main": "app.js",
"license": "ISC",
"directories": {
"test": "test"
},
"resolutions": {
"graceful-fs": "4.2.4"
},
"scripts": {
"start": "nodemon bin/www",
"test": "echo \"Error: no test specified\"",
"db:create-migration": "sequelize migration:create",
"db:model": "sequelize-cli model:generate",
"db:migrate": "sequelize db:migrate"
},
"repository": {
"type": "git",
"url": "hidden"
},
"dependencies": {
"@auth0/s3": "1.0.0",
"archiver": "5.3.1",
"async": "3.2.4",
"aws-sdk": "2.1230.0",
"axios": "1.4.0",
"base64url": "3.0.1",
"body-parser": "1.20.2",
"connect-multiparty": "2.2.0",
"cors": "2.8.5",
"dotenv": "16.3.1",
"es6-promise": "4.2.8",
"eslint-config-airbnb-base": "15.0.0",
"express": "4.18.2",
"express-jwt": "8.4.1",
"fecha": "4.2.3",
"googleapis": "120.0.0",
"helmet": "7.0.0",
"jira-client": "8.2.2",
"jsonwebtoken": "9.0.0",
"lodash": "4.17.21",
"log4js": "6.9.1",
"mandrill-api": "1.0.45",
"moment": "2.29.4",
"mysql2": "3.4.3",
"node-cron": "3.0.2",
"nodemon": "2.0.22",
"oauth": "0.10.0",
"request": "2.88.2",
"sequelize": "6.32.1",
"sharp": "0.32.1",
"squel": "5.13.0",
"twin-bcrypt": "2.1.1"
},
"devDependencies": {
"eslint": "8.44.0",
"eslint-plugin-import": "2.27.5",
"eslint-plugin-prettier": "4.2.1",
"prettier": "2.8.8",
"sequelize-cli": "6.6.1"
}
}
您可以分享响应标头吗?