ประเด็นคือ จะเพิ่มคอนฟิกเรื่อง security ใน contianer ที่รันอยู่แล้วเป็น apache + php 7
โดย Codex แนะนำ
1. สร้างไฟล์ apache-security.conf ในโฟลเดอร์เดียวกับ docker-compose.yml:
ServerTokens Prod
ServerSignature Off
# เปลี่ยนข้อความสำหรับ URL ที่ไม่มีอยู่ โดยยังตอบ HTTP 404
ErrorDocument 404 "Not Found"
แต่ละค่าทำหน้าที่ดังนี้:
- ServerTokens Prod ซ่อนเวอร์ชันและระบบปฏิบัติการใน response header เหลือเพียง Server: Apache
- ServerSignature Off ลบบรรทัด Apache/2.X.YY (Distro Name) Server at ... ด้านล่างหน้า error
- ErrorDocument 404 เปลี่ยนหน้า 404 ให้แสดงข้อความสั้น ๆ ตามที่กำหนด
อ้างอิง เอกสารการตั้งค่า Apache
2. เพิ่ม volume ใน service www_myweb โดยเก็บรายการเดิมไว้:
volumes:
- ./html:/var/www/html
- ./php.ini:/usr/local/etc/php/php.ini
- ./apache-security.conf:/etc/apache2/conf-enabled/zz-security.conf:ro
ชื่อ zz-security.conf ช่วยให้โหลดหลังไฟล์ security.conf ปกติของ Debian และ :ro กำหนดให้ container อ่านไฟล์ได้อย่างเดียว
3. ตรวจสอบและนำค่าไปใช้:
$ docker compose config --quiet
$ docker compose up -d --no-deps --force-recreate www_myweb
$ docker compose exec www_myweb apache2ctl -t
การ recreate จะทำให้เว็บหยุดช่วงสั้น ๆ ครับ หากตรวจสอบสำเร็จควรเห็น Syntax OK