Lỗi 403 sau khi nâng cấp lên apache2.4


34

Sau khi nâng cấp từ máy chủ Ubuntu 13.04, các trang www sẽ không hiển thị.

Lỗi 403 Cấm Bạn không có quyền truy cập / trên máy chủ này.

Tôi đã thay đổi kiểm soát truy cập lưu từ apache2.2 sang apache2.4, nhưng điều đó không hiệu quả. Tôi có thể làm gì khác?

Câu trả lời:


59

Điều đã xảy ra là cú pháp của các tệp cấu hình trong apache2.4 đã thay đổi.

Nguồn: Điều này cũng đã xảy ra với tôi sau khi tôi nâng cấp lên 13.10

tập tin conf.d

Tất cả các tập tin đã /etc/apache2/conf.dđược chuyển đến /etc/apache2/conf-available.

Bây giờ họ làm việc theo cùng một cách sitesmodslàm việc. Chỉ cần đặt các tập tin conf của bạn vào conf-availablethư mục và kích hoạt cái bạn muốn a2enconf <config-file-name>.

Thí dụ:

Tôi đã có một tập tin conf.d/httpd.confcó chỉ thị ServerName.
Để thực hiện công việc đó, tôi phải di chuyển nó vào conf-availablethư mục và kích hoạt nó bằng tay.

sudo mv /etc/apache2/conf.d/httpd.conf /etc/apache2/conf-available/httpd.conf
sudo a2enconf httpd

tập tin trang web

Trước đây, các tập tin trong /etc/apache2/sites-availablekhông có phần mở rộng. Ví dụ /etc/apache2/sites-available/default. Bây giờ một .confphần mở rộng là cần thiết.

Thí dụ:

Nếu bạn đã có /etc/apache2/sites-available/some-site, trong 13.04 bạn chỉ có thể kích hoạt nó bằng cách sử dụng sudo a2ensite some-site. Bây giờ nó sẽ cung cấp cho bạn một lỗi nói

LRI: Trang web một số trang web không tồn tại!

Để khắc phục điều này, hãy thêm a .confvào tất cả các tệp cấu hình của bạn sites-available. Bạn có thể thực hiện tương tự sites-enabledhoặc bạn có thể xóa tất cả các tệp và bật lại từng tệp một cách thủ công.
Tôi khuyên bạn nên thực hiện chúng một cách thủ công vì có thể bạn cần sửa từng Vhost (bước tiếp theo).

sudo find /etc/apache2/sites-available/ ! -iname '*.conf' -type f -exec mv '{}' '{}'.conf \;

nếu bạn quyết định làm chúng bằng tay:

sudo rm /etc/apache2/sites-enabled/*
sudo a2ensite your-site-name

Chỉ thị máy chủ ảo:

cho phép / từ chối vs Yêu cầu

Nếu bạn đã có những điều sau đây:

<Directory /path/to/your/site/>
    order allow,deny
    allow from all
</Directory>

Nó sẽ trở thành:

<Directory /path/to/your/site/>
    Require all granted
</Directory>

Để biết thêm thông tin, hãy kiểm tra các nhận xét của DaveRandom về câu trả lời trên Stack Overflow.

Một cách đơn giản, nếu bạn nâng cấp lên apache2.4 và giữ cái cũ httpd.confcủa apache2.2, cho phép chỉ nên giữ làm việc tốt. Nếu bạn đã nâng cấp httpd.conf(mà tôi muốn đề xuất), bạn sẽ nhận được 403 lỗi cho đến khi bạn thay đổi Order/ Allow/ Denychỉ thị thành tương đương Require.

Tùy chọn thư mục

Nếu bạn có lựa chọn Directory, lưu ý rằng tất cả họ đều phải được thêm vào phía trước với một +hoặc -hoặc ai trong số họ cả. Một kết hợp của cả hai không được phép:

Thí dụ:

Điều này được cho phép:

<Directory /path/to/your/site/>
    Options +Indexes +FollowSymLinks -MultiViews
</Directory>

Đây cũng vậy (Lưu ý rằng các ví dụ này không làm cả hai cùng làm một việc, ví dụ trước sẽ vô hiệu hóa MultiViewstùy chọn, ví dụ tiếp theo không):

<Directory /path/to/your/site/>
    Options Indexes FollowSymLinks MultiViews
</Directory>

Điều này không còn được cho phép:

<Directory /path/to/your/site/>
    Options Indexes FollowSymLinks -MultiViews
</Directory>

Tùy chọn cấu hình cuối cùng sẽ đưa ra lỗi cú pháp cho biết:

Tất cả các Tùy chọn phải bắt đầu bằng + hoặc - hoặc không có Tùy chọn nào có thể.

Khởi động lại apache

Khi mọi thứ đã hoàn tất, bạn cần khởi động lại máy chủ apache của mình để các thay đổi có hiệu lực:

 sudo apache2ctl restart

Bạn có thể tìm thấy hướng dẫn nâng cấp chi tiết từ 2.2 lên 2.4 trên tài liệu chính thức.


1
Trên hệ thống của tôi, không có httpd.conftệp hoặc conf.dthư mục. Nhưng có một apache2.conftập tin. Tôi đã thử di chuyển nó vào conf-availablethư mục và gặp lỗi sau khi tôi khởi động lại apache2: apache2: Không thể mở tệp cấu hình /etc/apache2/apache2.conf: Không có tệp hoặc thư mục như vậy - Lý do có thể là gì?
Amal Murali

@AmalMurali Đây httpd.confchỉ là một ví dụ. Có thể bạn sẽ không có bất kỳ tệp cấu hình nào trong conf.dthư mục, trong trường hợp đó, chỉ cần bỏ qua bước đó. Đối với apache2.conf, nó không nên được chuyển vào conf-availablethư mục. Đây là tệp cấu hình chính của apache và đường dẫn của nó phải là /etc/apache2/apache2.conf và không được thay đổi.
Dan

1
Ồ Đây thực tế là tổng quan sáng suốt duy nhất được tìm thấy ở bất cứ đâu. Cảm ơn.
Russ BHRan

không có config.dhoặc sites availablethư mục. xem tất cả các tệp cấu hình tại đây: imgur.com/WczXp3v
diEcho

1
@EdwardBlack Có thể có một lý do khác nếu bạn vẫn đang sử dụng máy chủ ảo mặc định như được giải thích trong các câu trả lời của câu hỏi sau: Các máy chủ ảo Apache không còn hoạt động sau khi cập nhật lên 13.10
Dan

0

Tôi giả sử rằng các trang web đang chạy trên máy chủ Ubuntu của bạn.

Kiểm tra httpd.conf của bạn để đảm bảo cài đặt DocumentRoot của bạn đang trỏ đến đúng nơi.

Kiểm tra quyền truy cập tệp trên thư mục được tham chiếu bởi DocumentRoot có thể được đọc bởi người dùng mà máy chủ web chạy.

Kiểm tra xem bạn có một index.html / index.htm thích hợp không và máy chủ web không cố gắng thực hiện một danh sách thư mục.


0

Tôi gặp vấn đề tương tự.

Tôi không thể chạy apache 2.4 trừ khi tôi sử dụng 'Cho phép từ tất cả', điều này thật khó chịu vì tôi muốn cung cấp một bản ngắt sạch từ các phiên bản <2.4. Sau rất nhiều thử nghiệm và sai sót và tìm kiếm nhiều, tôi phát hiện ra một tham chiếu đến access_compat và nhận ra rằng đây là chỉ để tương thích. Mặc dù tài liệu apache nói rằng cả hai đều có thể được sử dụng, nhưng nó khuyên bạn không nên.

Tôi đã gỡ bỏ mô-đun này khỏi tệp tải / etc / sysconfig / apache2, điều này đã giải quyết vấn đề của tôi ngay lập tức.

Trân trọng


-1

Tôi đang phục vụ các tệp từ một thư mục không chuẩn nên để thực hiện nâng cấp, tôi phải chỉnh sửa /etc/apache2/apache2.conf và thêm: Tùy chọn Chỉ mục FollowSymLinks AllowOverride Không yêu cầu tất cả được cấp

Sau đó, và các thay đổi được đề xuất ở trên, lỗi 403 đã biến mất.

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.