วิธีแก้ไข nginx.conf เพื่อเพิ่มขนาดไฟล์อัพโหลด


106

ฉันต้องการเพิ่มจำนวนmaximum file sizeที่สามารถอัปโหลดได้
หลังจากทำการค้นคว้าทางออนไลน์ฉันพบว่าคุณต้องแก้ไขไฟล์ 'nginx.conf'
วิธีเดียวที่ฉันสามารถเข้าถึงไฟล์นี้ได้คือไปที่ Putty และพิมพ์คำสั่ง:

vi /etc/nginx/nginx.conf

สิ่งนี้จะเปิดไฟล์ แต่ฉันมี 2 คำถามตอนนี้:

  1. ฉันจะแก้ไขไฟล์นี้ได้อย่างไร?
  2. ฉันพบออนไลน์ที่คุณต้องเพิ่มบรรทัดของรหัสต่อไปนี้:

client_max_body_size 8M;

ฉันจะใส่รหัสบรรทัดนี้ไว้ที่nginx.confใด

คำตอบ:


202

เพิ่มclient_max_body_size

ตอนนี้คุณกำลังแก้ไขไฟล์คุณต้องเพิ่มบรรทัดลงในบล็อกเซิร์ฟเวอร์ดังนี้

server {
    client_max_body_size 8M;

    //other lines...
}

หากคุณกำลังโฮสต์หลายไซต์ให้เพิ่มลงในบริบท http เช่นนั้น

http {
    client_max_body_size 8M;

    //other lines...
}

และอัปเดตupload_max_filesizeในไฟล์ php.ini ของคุณเพื่อให้คุณสามารถอัปโหลดไฟล์ที่มีขนาดเท่ากันได้

บันทึกใน Vi

เมื่อคุณทำเสร็จแล้วคุณต้องบันทึกซึ่งสามารถทำได้ใน vi โดยกดปุ่มescและพิมพ์:wqและย้อนกลับ

รีสตาร์ท Nginx และ PHP

ตอนนี้คุณต้องรีสตาร์ท nginx และ php เพื่อโหลดการกำหนดค่าใหม่ ซึ่งสามารถทำได้โดยใช้คำสั่งต่อไปนี้

sudo service nginx restart
sudo service php5-fpm restart

หรือสิ่งที่เรียกว่าบริการ php ของคุณ


8
อาจไม่ใช่ความคิดที่ดีที่จะเพิ่มลงในhttp {บริบทเพื่อให้เซิร์ฟเวอร์ทั้งหมดรับช่วงต่อ และตรวจสอบให้แน่ใจว่าคุณได้ปรับupload_max_filesizeในของคุณphp.iniให้เข้ากับการตั้งค่า nginx ของคุณ หากคุณเรียกใช้ Laravel โดยใช้ Homestead / Vagrant ไฟล์นั้นจะอยู่ที่/etc/php5/fpm/php.ini.
damiani

ใช่ฉันลืมบอกว่าฉันใช้ Laravel Homestead ดังนั้นฉันจึงเปิด '/etc/php5/fpm/php.ini' และพบบรรทัดของรหัส 'upload_max_filesize = 2M' ดังนั้นฉันจึงต้องการเปลี่ยนเพื่อให้ '2M' กลายเป็น '8M' เมื่อฉันทำการแก้ไขแล้วฉันเพียงแค่กด 'Ctrl Z' เพื่อออกจากไฟล์จากนั้นเรียกใช้ 'sudo service nging restart'
Jeff P.

คุณไม่ได้กด ctrl-z คุณต้องบันทึกด้วย vi กด esc จากนั้นพิมพ์: wq แล้วกด Enter
Matt Burrow

2
ออกมาจากตัวแก้ไขแล้วนำหน้าคำสั่ง vi ด้วย sudo ชอบจัง; sudo vi /etc/nginx/nginx.conf หรือ sudo vi /etc/php5/fpm/php.ini
Matt Burrow

2
sudo nginx -s reloadโหลดการกำหนดค่าใหม่โดยไม่ต้องรีสตาร์ท nginx
Vincnetas

12

ในกรณีที่ใช้ nginx proxy เป็นdocker container (เช่นjwilder / nginx-proxy ) มีวิธีการกำหนดค่าclient_max_body_size(หรือคุณสมบัติอื่น ๆ ) ดังต่อไปนี้:

  1. สร้างไฟล์กำหนดค่าที่กำหนดเองเช่น/etc/nginx/proxy.confด้วยค่าที่เหมาะสมสำหรับคุณสมบัตินี้
  2. เมื่อเรียกใช้คอนเทนเนอร์ให้เพิ่มเป็นปริมาตรเช่น -v /etc/nginx/proxy.conf:/etc/nginx/conf.d/my_proxy.conf:ro

โดยส่วนตัวพบว่าวิธีนี้ค่อนข้างสะดวกเนื่องจากไม่จำเป็นต้องสร้างคอนเทนเนอร์แบบกำหนดเองเพื่อเปลี่ยนการกำหนดค่า ฉันไม่ได้มีส่วนเกี่ยวข้องjwilder/nginx-proxyเพียงแค่ใช้ในโครงการของฉันและวิธีที่อธิบายไว้ข้างต้นช่วยฉันได้ หวังว่ามันจะช่วยคนอื่นด้วย


1
โครงการที่เกี่ยวข้องนี้: github.com/evertramos/… (nginx-proxy จาก jwilder รวมกับการสร้างใบรับรองจาก allow เข้ารหัส) มีสคริปต์ที่เรียบร้อยสำหรับทำสิ่งนี้และมีตัวเลือกนี้กำหนดไว้ล่วงหน้า (ถึง 100M) สร้าง. env จากตัวอย่าง uncomment บรรทัด#USE_NGINX_CONF_FILES=true; ทำงานและในที่สุดstart.sh docker-compose up(ฉันไม่มีส่วนเกี่ยวข้องกับโครงการใดโครงการหนึ่ง)
glaux

3

ขั้นแรกไปที่ Path ของphp.ini

sudo vi /etc/php/7.2/fpm/php.ini

จากนั้นการเปลี่ยนแปลงครั้งต่อไป

upload_max_filesize = 999M
post_max_size = 999M

แล้ว ESC-->:wq

ตอนนี้วางคำสั่งนี้ในที่สุด

sudo systemctl รีสตาร์ท php7.2-fpm.service

คุณทำเสร็จแล้ว


2

คุณสามารถเพิ่ม client_max_body_size และ upload_max_filesize + post_max_size ได้ตลอดทั้งวัน หากไม่ปรับการหมดเวลา HTTP จะไม่ทำงาน

// คุณต้องปรับสิ่งนี้และอาจเป็นฝั่ง PHP ด้วย client_body_timeout 2 นาที // 1GB fileupload


ข้อมูลเพิ่มเติมเกี่ยวกับการปรับแต่งเว็บเซิร์ฟเวอร์ของคุณที่นี่: doc.owncloud.com/server/admin_manual/configuration/files/…
Digital Human
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.