Score:2

Apache พร้อม HTTP/2 และ upload_max_filesize ต่อไดเร็กทอรี

ธง cn

ฉันเพิ่งอัปเกรดเซิร์ฟเวอร์ apache2 บน Debian 9.13 Stretch เพื่อเริ่มใช้ HTTP/2 เท่าที่ฉันกังวลที่ต้องเปลี่ยนจาก mod_php เป็น PHP-FPM

ปัญหาคือ PHP-FPM ไม่ปฏิบัติตามคำสั่ง apache บางอย่างจาก .htaccess ตัวอย่างเช่นฉันเคยใช้ php_value upload_max_filesize 900M ในไฟล์ .htaccess ที่ไดเร็กทอรีอัปโหลด เพื่อเพิ่มขนาดไฟล์และพารามิเตอร์ที่เกี่ยวข้องอื่นๆ เช่น max_execution_time และ post_max_size ในระดับที่ละเอียดกว่าการใช้ไฟล์ php.ini ส่วนกลาง

นี่คือทางเลือกบางส่วนที่ฉันได้ลองแล้ว:

  1. การใช้ PHP ini_set() กระบวนการ: post_max_size และ upload_max_filesize ถูกใช้ก่อนที่สคริปต์ของฉันจะเริ่มต้น
  2. การใช้ .user.ini แทนที่ไฟล์: น้อยกว่าอุดมคติ เนื่องจากต้องมีการจำกัดการอัปโหลดไฟล์ .ini ในทุก ๆ ที่ที่อนุญาตให้อัปโหลดเนื้อหา (ฉันสามารถใช้ <Files> กรองเพื่อปิดการเข้าถึงการอ่าน แต่ไม่สามารถอัปโหลดได้)
  3. การเปลี่ยนชื่อไฟล์ .user.ini เป็น SOME_SCRAMBLED_TEST.ini และเพิ่มไฟล์ที่จำเป็นทั้งหมดถูกปฏิเสธ: อันตรายเนื่องจาก php เดียว เรื่องอื้อฉาว ผิดตำแหน่งอาจเปิดเผยการกำหนดค่าที่ปลอดภัยโดยความสับสนของฉัน
  4. การเปลี่ยนในสคริปต์ php.ini: จะใช้เป็นตัวเลือกสุดท้าย ฉันชอบที่จะมีขนาดการอัปโหลดที่ค่อนข้างสูงมากกว่าอนุญาตให้ผู้ใช้อัปโหลดไฟล์ .user.ini ที่ทำให้เซิร์ฟเวอร์ของฉันเสียหาย

มีทางเลือกอื่นใดในการใช้ HTTP/2 และมีเซิร์ฟเวอร์ที่ปลอดภัยที่อนุญาตให้อัปโหลดหรือไม่

djdomi avatar
za flag
ใช้ apache config โดยตรงเพื่อ จำกัด หรือไม่
Juan C. Roldán avatar
cn flag
สวัสดี @djdomi ขอบคุณสำหรับคำตอบของคุณ! คุณช่วยอธิบายอย่างละเอียดได้ไหม คุณหมายถึงการตั้งค่าใน VirtualHost หรือไม่
Score:0
ธง cn

หลังจากทำงานมา 2 วัน ฉันก็สามารถทำสิ่งนี้ได้

ขั้นแรกห้าม .user.ini ค่าเริ่มต้นที่เป็นอันตรายในการอ่านในทุกไดเร็กทอรี:

# ชื่อไฟล์ user_ini ที่ว่างเปล่าปิดการใช้งาน
user_ini.filename =

จากนั้นเปิดใช้งานเฉพาะสำหรับไดเร็กทอรีที่ต้องการเท่านั้นที่ apache2.conf ไฟล์ที่อยู่ใน /etc/apache2 (และปิดการอ่านเหล่านั้น) เราสามารถทำได้โดยใช้ SetEnv ด้วยตัวกรองไดเรกทอรี:

<Directory /path/to/upload/directory>
        SetEnv PHP_VALUE "user_ini.filename = .user.ini"
        <Files ".user.ini">
                Require all denied
        </Files>
</Directory>

จากนั้นที่ /path/to/upload/ไดเรกทอรี, สร้าง .user.ini ไฟล์ที่มีการกำหนดค่าที่คุณต้องการ:

post_max_size = 2048M
upload_max_filesize = 2048M
max_execution_time = 10
max_input_time = 10

ด้วยวิธีนี้คุณสามารถมีไดเร็กทอรีต่อ .user.ini โดยไม่เปิดใช้งานสำหรับทั้งเซิร์ฟเวอร์

djdomi avatar
za flag
เขาเร็วกว่าฉัน :)
Juan C. Roldán avatar
cn flag
@djdomi ความกดดันในการทำงาน :) ขอบคุณสำหรับคำใบ้!

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา