Computer >> Hướng Dẫn Máy Tính >  >> Xử Lý Sự Cố >> Linux

Khắc Phục Lỗi mod_authz_host Trong Apache Trên Linux

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ự)

  1. 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 gedit nếu thích GUI).

  2. Tìm khối directive dạng:
    Order deny,allow
    Deny from all
    Allow from distrowatch.com
  3. Đảm bảo khối này nằm bên trong cặp thẻ <Location /> ... </Location> (có khoảng trắng sau Location):
<Location />
 Order deny,allow
 Deny from all
 Allow from your-domain.com
</Location>
  • Thay distrowatch.com / dev.example.com bằ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ặc service 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ùng Require thay Order/Deny/Allow — bài viết này giả định Apache 2.2 style).