โดยดีฟอลต์คอนฟิกของ Apache เว็บเซิร์ฟเวอร์ที่ติดตั้งมากับลีนุกซ์เวอร์ชั่นต่างๆ จะเปิด (enable) การใช้งานโมดูลต่างๆ ทั้งหมด ทั้งนี้เพื่อสะดวกและง่ายต่อการเริ่มต้นใช้งาน
แต่การใช้งานจริงๆ ในระบบ production แนะนำให้ปิด (disable) คอนฟิกของโมดูลที่ไม่ได้ใช้งาน ทั้งนี้เพื่อประโยชน์ทางด้านความปลอดภัย (security) และประหยัดหน่วยความจำ Memory ที่ต้องถูกใช้งานโดยเปล่าประโยชน์ด้วย (แนะนำให้ใช้คำสั่ง ps เปรียบเทียบขนาด memory ที่ใช้ก่อนและหลังการปิดโมดูล)
บทความนี้ได้รวบรวมจัดกลุ่มโมดูลตามลักษณะการใช้งาน ซึ่งถ้าคุณไม่ได้ใช้คุณสมบัติในโมดูลนั้นๆ สามารถที่จะปิดได้ ด้วยการใส่เครื่องหมาย # หน้าบรรทัดของ LoadModule โดยคอนฟิกทั้งหมดจะเป็นตัวอย่างที่ทำบน Fedora 9 และหลังจากการแก้ไขทั้งหมดเพื่อปิดโมดูลทั้งหมดนี้แล้ว เว็บยังสามารถรัน PHP ได้ตามปกติ
คำเตือน กรุณาทดสอบการเปลี่ยนแปลงคอนฟิกทุกอย่างให้แน่ใจว่า การปิดโมดูลไป จะไม่กระทบต่อการรันโปรแกรมที่ทำงานอยู่บนเว็บเซิร์ฟเวอร์
Apache Module: Authentication and Authorization
โมดูลในกลุ่มนี้ถูกใช้เพื่อตรวจสอบผู้ใช้งาน (Authentication) และระบุสิทธิที่ผู้ใช้งานสามารถทำได้ (Authorization) ลักษณะการตรวจสอบคือจะมีหน้าต่าง popup ขึ้นมาให้ใส่ User name และ Password แล้วส่งข้อมูลนี้ตรวจสอบกับไฟล์ที่เก็บรหัสผู้ใช้งาน ว่าถูกต้องหรือไม่
ตัวอย่างไฟล์คอนฟิก .htaccess และไฟล์ .htpasswd เพื่อระบุว่า ก่อนที่จะเข้าดูเว็บไซต์นี้ได้ ต้องใส่ User name และ Password ให้ถูกต้องก่อน โดยตรวจสอบข้อมูลรหัสผ่านที่อยู่ในไฟล์ /var/www/html/.htpasswd
[root@web-server html]# cat .htaccess AuthType Basic AuthName "Password Required" AuthUserFile /var/www/html/.htpasswd Require valid-user
[root@web-server html]# cat .htpasswd john:<password>
การตรวจสอบสิทธิผู้ใช้งานแบบนี้ เป็นคุณสมบัติของโมดูลหนี่งของ Apache ไม่เกี่ยวข้องกับการเขียนโปรแกรมเว็บเอง เช่น PHP แล้วใช้ SESSION ในการตรวจสอบ
ถ้าเว็บเซิร์ฟเวอร์ไม่มีการใช้การตรวจสอบสิทธิแบบนี้ สามารถปิดคอนฟิกของโมดูลในบรรทัดต่อไปนี้ได้
ตัวอย่างการปิดโมดูล Authentication and Authorization
[root@web-server ~]# cat /etc/httpd/conf/httpd.conf
...
#LoadModule auth_basic_module modules/mod_auth_basic.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
#LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authn_alias_module modules/mod_authn_alias.so
#LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
#LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
#LoadModule authz_user_module modules/mod_authz_user.so
#LoadModule authz_owner_module modules/mod_authz_owner.so
#LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
#LoadModule authz_default_module modules/mod_authz_default.so
#LoadModule ldap_module modules/mod_ldap.so
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
...
ข้อควรระวัง โมดูล authz_host_module จะเป็นการตรวจสอบสิทธิโดยสามารถระบุเป็น ip address หรือ host name ในไฟล์คอนฟิก httpd.conf จะมีการเรียกใช้คอนฟิกของโมดลูนี้หลายที่ ไม่แนะนำให้ปิด
Apache Module: Dynamic Content with CGI
หากไม่มีโปรแกรมที่เป็น CGI รันอยู่บนเว็บเซิร์ฟเวอร์ สามารถที่จะปิดโมดูล cgi_module ได้ (การปิดโมดูลนี้ไม่กระทบกับเว็บที่เขียนเป็น PHP)
ตัวอย่างการปิดโมดูล cgi_module
[root@web-server ~]# /etc/httpd/conf/httpd.conf ... #LoadModule cgi_module modules/mod_cgi.so ...
Apache Module: Server Side Includes (SSI)
หากไม่มีโปรแกรมที่เป็น Sever Side Includes หรือ SSI รันอยู่บนเว็บเซิร์ฟเวอร์ สามารถที่จะปิดโมดูล include_module ได้ (การปิดโมดูลนี้ไม่กระทบกับเว็บที่เขียนเป็น PHP)
ตัวอย่างการปิดโมดูล include_module
[root@web-server ~]# /etc/httpd/conf/httpd.conf ... #LoadModule include_module modules/mod_include.so ...
Apache Module: Apache Proxy Server
นอกจากจะสามารถรันเป็นเว็บเซิร์ฟเวอร์ได้แล้ว โปรแกรม Apache ยังสามารถทำหน้าที่เป็น Proxy Server ได้อีกด้วย เช่นเดียวกับ Squid ถ้าเครื่องทำหน้าที่เป็นเว็บเซิร์ฟเวอร์อย่างเดียว คุณสามารถปิดโมดูลนี้ได้ ใน Fedora 9 การปิดโมดูล Proxy ของ Apache ต้องแก้ไขสองไฟล์คือในไฟล์ /etc/httpd/conf/httpd.conf และไฟล์ /etc/httpd/conf.d/proxy_ajp.conf
[root@web-server ~]# cat /etc/httpd/conf/httpd.conf ... #LoadModule proxy_module modules/mod_proxy.so #LoadModule proxy_balancer_module modules/mod_proxy_balancer.so #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so #LoadModule proxy_http_module modules/mod_proxy_http.so #LoadModule proxy_connect_module modules/mod_proxy_connect.so ...
[root@web-server ~]# cat /etc/httpd/conf.d/proxy_ajp.conf
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so ...
Apache Module: Distributed Authoring and Versioning (WebDAV)
หากไม่ได้ใช้คุณสมบัติของโมดูล WebDAV นี้ สามารถแก้ไขไฟล์ได้ดังนี้
[root@web-server ~]# cat /etc/httpd/conf/httpd.conf ... #LoadModule dav_module modules/mod_dav.so #LoadModule dav_fs_module modules/mod_dav_fs.so ...
Apache Module: Server Status
โมดูลนี้มีทั้งข้อดีข้อเสีย ข้อดีคือสามารถดูสถานะโดยละเอียดของเว็บเซิร์ฟเวอร์ได้ ในกรณีที่เครื่องช้า แต่ข้อเสียคืออาจเป็นปัญหาทางด้านความปลอดภัยของเครื่องได้ คอนฟิกโดยดีฟอลต์จะอนุญาตให้ดูได้จาก localhost หรือเครื่องที่รันเว็บอยู่เท่านั้น แต่ถ้าเครื่องของคุณทดสอบแล้วทำงานได้ตามปกติ สามารถจะปิดโมดูลนี้ได้
[root@web-server ~]# cat /etc/httpd/conf/httpd.conf ... #LoadModule status_module modules/mod_status.so #LoadModule info_module modules/mod_info.so ...
Apache Module: mod_perl
หากไม่มีเว็บโปรแกรมที่เขียนเป็น mod_perl รันอยู่บนเว็บเซิร์ฟเวอร์ สามารถที่จะปิดโมดูล mod_perl ได้ (การปิดโมดูลนี้ไม่กระทบกับเว็บที่เขียนเป็น PHP)
ตัวอย่างการปิดโมดูล mod_perl
[root@web-server ~]# cat /etc/httpd/conf.d/perl.conf ... LoadModule perl_module modules/mod_perl.so ...
Apache Module: mod_python
หากไม่มีเว็บโปรแกรมที่เขียนเป็น mod_python รันอยู่บนเว็บเซิร์ฟเวอร์ สามารถที่จะปิดโมดูล mod_python ได้ (การปิดโมดูลนี้ไม่กระทบกับเว็บที่เขียนเป็น PHP)
ตัวอย่างการปิดโมดูล mod_python
[root@web-server ~]# cat /etc/httpd/conf.d/python.conf ... #LoadModule python_module modules/mod_python.so
# Override type-map handler for /var/www/manual #<Directory "/var/www/manual/mod/mod_python"> # <Files *.html> # SetHandler default-handler # </Files> #</Directory> ...
Apache Module: Others
โมดูลอื่นๆ ที่น่าจะปิดคือ
- speling_module – แก้ไข url ที่พิมพ์ผิด
-
userdir_module – อนุญาตผู้ที่มีแอคเคานต์อยู่บนเซิร์ฟเวอร์สามารถมีเว็บส่วนตัวได้
[root@web-server ~]# cat /etc/httpd/conf/httpd.conf ... #LoadModule speling_module modules/mod_speling.so #LoadModule userdir_module modules/mod_userdir.so ...