ด้วยความที่ component stack ใน AWS Beanstalk หลายๆ ตัวมีการปรับเปลี่ยนจากที่เคยใช้ Apache เป็น Web server หรือ Web proxy ไปเป็น Nginx web server เป็นค่าปริยาย (Default configuration) แทน
ซึ่งจากการปรับเปลี่ยนนี้ อาจส่งผลให้ developer หลายๆ คน เจอปัญหาปวดเฮดอยู่ไม่น้อย ในกรณีที่ต้องการ upload file เวลา submit web form ถ้าขนาดไฟล์ใหญ่ ไซส์โตๆ จะตี error code เป็น HTTP 413 Request Entity Too Large!
เหตุผลเพราะ Nginx นั้น จะกำหนดค่าเริ่มต้น ให้ไฟล์ที่มีขนาดใหญ่สุดที่ upload ได้อยู่ที่ 1MB เท่านั้น เอาซี้!!!
วิธีแก้ของ Nginx นั้นไม่ยาก เพียงแค่เพิ่ม client_max_body_size ในไฟล์ nginx.conf เพื่อ override ค่า default ก็เป็นอันใช้ได้ อยากได้มากน้อยเท่าไหร่ ก็จัดไป
client_max_body_size 100M;
แต่พอเป็น AWS Beanstalk อาจจะต้องออกแรงนิดหน่อย โดยเพิ่มโฟลเดอร์ .ebextensions/nginx/conf.d/ ใน Project และสร้าง config ไฟล์
~/workspace/my-app/
|-- .ebextensions
| -- nginx
| -- conf.d
+ | -- myconf.conf
จากนั้น repackage project folder ให้เรียบร้อยแล้ว upload package ใน AWS Beanstalk หรือถ้าใครถนัดใช้ eb deploy ก็ไม่ว่ากัน ถ้าไม่ติด error อะไรตอน deploy ก็เป็นอันใช้ได้
Top comments (2)
Nice tip.
Good ja