Khi cài apache2 trên RHEL, Arch, Debian Server, Ubuntu Server..., bạn có thể gặp lỗi module mod_authz_host ngăn chặn khởi động dịch vụ. Lỗi thường là cảnh báo cú pháp dòng 1 file config, nhưng nguyên nhân không phải module thiếu — module đã nạp đúng. Vấn đề là directive (chỉ thị) nằm sai vị trí.
Sửa File restrict.conf (Hoặc File Config Tương Tự)
- Mở file với quyền root:
sudo nano /etc/apache2/mods-enabled/restrict.conf(Đường dẫn có thể khác tùy distro. Dùng
gksu geditnếu thích GUI). - Tìm khối directive dạng:
Order deny,allow Deny from all Allow from distrowatch.com - Đảm bảo khối này nằm bên trong cặp thẻ
<Location /> ... </Location>(có khoảng trắng sauLocation):
<Location />
Order deny,allow
Deny from all
Allow from your-domain.com
</Location>
- Thay
distrowatch.com/dev.example.combằng domain/IP thực tế của bạn. - Nếu cần áp dụng cho thư mục: thay
<Location />bằng<Directory /duong/dan/>(vẫn giữ khoảng trắng). - Xóa các khối trùng lặp (cùng URL, cùng directive) — có thể xung đột.
- Lưu file, thoát editor.
- Khởi động lại Apache:
sudo systemctl restart apache2(hoặcservice apache2 restart).
Hiểu Về Lỗi
Thông báo lỗi dạng:
Syntax error on line # of /etc/apache2/mods-enabled/restrict.conf:
Order not allowed here
Chỉ ra directive không nằm trong block <Location>/<Directory>. Apache chỉ báo lỗi đầu tiên gặp — sửa xong có thể lỗi khác hiện ra (do dòng sau bị che). Dùng Ctrl+C trong nano để xem số dòng hiện tại khi debug.
Lưu Ý
- Không cần cài thêm
mod_authz_host— nó đã có sẵn. - Mỗi URL/chỉ thị chỉ cần 1 block.
- Doc chính thức:
httpd.apache.org/docs/2.4/howto/access.html(Apache 2.4 dùngRequirethayOrder/Deny/Allow— bài viết này giả định Apache 2.2 style).