Apache: "AuthType chưa được đặt!" Lỗi 500


98

Đã lâu rồi tôi không sử dụng máy chủ web Apache httpd. Tôi đang kích hoạt một máy chủ cục bộ cho một dự án và khi tôi cố gắng yêu cầu localhost / index.html, tôi gặp lỗi 500 và tôi thấy điều này trong nhật ký lỗi:

[Tue Jan 21 09:23:58 2014] [crit] [client ::1] configuration error:  couldn't perform authentication. AuthType not set!: /index.html
[Tue Jan 21 09:23:58 2014] [error] an unknown filter was not added: DEFLATE
[Tue Jan 21 09:23:58 2014] [crit] [client ::1] configuration error:  couldn't perform authentication. AuthType not set!: /favicon.ico

Có vẻ như có thể có 2 lỗi ở đây trong cấu hình apache, một lỗi liên quan đến "AuthType not set!" và có thể khác liên quan đến "bộ lọc chưa được thêm: DEFLATE". Tôi không biết những điều này có nghĩa là gì hoặc bắt đầu đào sâu từ đâu.

Một tìm kiếm cơ bản của Google đã tiết lộ liên kết này chỉ ra rằng thủ phạm có thể là "Yêu cầu tất cả được cấp phép". Dòng này trong httpd.conf của tôi có thể có liên quan.

<Directory "/var/www">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>

Cấu hình apache này chủ yếu là những gì được sử dụng trong quá trình sản xuất cho dự án này, vì vậy tôi biết điều này hoạt động, chỉ là hiện không hoạt động trên máy trạm của tôi. Điều này có nghĩa là gì và tôi nên thử gì tiếp theo? Tôi đã thử nhận xét "Yêu cầu tất cả được cấp phép" và khởi động lại apache nhưng vô ích.

Sau câu hỏi SO này, tôi cũng đã tải mod_authz_host

LoadModule authz_host_module modules/mod_authz_host.so

và thêm "Cho phép từ tất cả", khởi động lại máy chủ ,. nhưng vấn đề vẫn tồn tại. Vấn đề giảm phát dường như không liên quan và đã được giải quyết dễ dàng bằng cách thêm

LoadModule deflate_module modules/mod_deflate.so

Câu hỏi vẫn còn, làm thế nào để giải quyết lỗi 500 này?

[Tue Jan 21 09:44:20 2014] [crit] [client ::1] 
configuration error:  couldn't perform authentication. 
AuthType not set!: /index.html

Câu trả lời:


183

Xóa dòng có nội dung

Require all granted

nó chỉ cần thiết trên Apache> = 2.4


1
Hoặc sử dụng cú pháp <IfVersion> ... xem câu trả lời của tôi bên dưới.
pkout

Bản sửa lỗi tuyệt vời - mất quá nhiều thời gian để tìm thấy. Cảm ơn!
AlienWebguy

Trong OS X MAMP apache 2.2, thay đổi từ "Yêu cầu tất cả được cấp" thành Thỏa mãn bất kỳ
Matilda Yi Pan

49

Vấn đề ở đây có thể được xây dựng theo cách khác: làm cách nào để tạo một cấu hình hoạt động cả trong apache 2.2 và 2.4?

Require all grantedchỉ ở phiên bản 2.4, nhưng Allow all ...ngừng hoạt động ở phiên bản 2.4 và chúng tôi muốn có thể triển khai cấu hình hoạt động trong cả hai.

Giải pháp duy nhất tôi tìm thấy, mà tôi không chắc là giải pháp thích hợp, là sử dụng:

# backwards compatibility with apache 2.2
Order allow,deny
Allow from all

# forward compatibility with apache 2.4
Require all granted
Satisfy Any

Điều này sẽ giải quyết vấn đề của bạn, hoặc ít nhất đã làm cho tôi. Bây giờ vấn đề có thể sẽ khó giải quyết hơn nhiều nếu bạn có các quy tắc truy cập phức tạp hơn ...

Xem thêm câu hỏi tương tự này . Wiki Debian cũng có các hướng dẫn hữu ích để hỗ trợ cả 2.2 và 2.4 .


Tôi đã cố tình nối hai đoạn mã để chúng hoạt động trong cả hai phiên bản ở đây, vui lòng không tách chúng ra một lần nữa.
anarcat

1
Làm việc như người ở. Cảm ơn!
Anna Wellington

34

Ngoài ra, giải pháp này hoạt động với cả phiên bản Apache2 <2.4 cũng như> = 2.4. Đảm bảo rằng mô-đun "phiên bản" được bật:

a2enmod version

Và sau đó sử dụng mã này thay thế:

<IfVersion < 2.4>
    Allow from all
</IfVersion>
<IfVersion >= 2.4>
    Require all granted
</IfVersion>

Bạn cũng có thể đi với câu trả lời này để tránh kích hoạt một mô-đun khác: stackoverflow.com/questions/10707186/…
Stefan

3

Chỉ cần xóa / nhận xét dòng sau khỏi tệp httpd.conf của bạn (etc / httpd / conf)

Yêu cầu tất cả được cấp

Điều này là cần thiết cho đến Phiên bản Apache 2.2 và không bắt buộc từ đó.


0

Tôi nghĩ rằng bạn có phiên bản 2.4.x của Apache.

Bạn có chắc chắn rằng bạn tải 2 mô-đun này không? - mod_authn_core - mod_authz_core

LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_core_module modules/mod_authz_core.so

Tái bút: Đề xuất của tôi về ủy quyền và quyền là (theo mặc định):

LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so

Cảm ơn Georgio, thực sự tôi không có mô-đun auth {n | z} _core trong thư mục mô-đun của mình.
user3220334

Bạn thấy tất cả các mô-đun này giống nhau với httpd -l?
Georgio

Tôi tự hỏi, tôi có nên xây dựng những cái riêng biệt? Đây là phần cài đặt 2.2.15 trên CentOS `apachectl -version Server version: Apache / 2.2.15 (Unix) Server được xây dựng: 13/08/2013 17: 29: 28 '
user3220334

Arf, xin lỗi, bạn sử dụng Apache 2.2.x chứ không phải 2.4.x. Các mô-đun không có tên giống nhau. Các mô-đun là: mod_authn_file.c mod_authn_default mod_authz_host mod_authz_groupfile mod_authz_user mod_authz_default mod_auth_basic
Georgio

Tuyệt vời, cảm ơn vì danh sách, tôi đã thêm tất cả chúng và khởi động lại nhưng vẫn gặp lỗi.
user3220334

0

Bạn có thể thử sudo a2enmod rewritenếu bạn sử dụng nó trong cấu hình của mình.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.