Apache Apache Client bị từ chối bởi cấu hình máy chủ, mặc dù cho phép truy cập vào thư mục (cấu hình vhost)


38

trong Apache trên Ubuntu Tôi đã thiết lập một vhost, nhưng trong trình duyệt tôi liên tục gặp lỗi "403 Truy cập bị cấm"; nhật ký cho biết " Máy khách bị từ chối bởi cấu hình máy chủ: / home / phối lại / ".

Tìm kiếm giải pháp trực tuyến tôi đã tìm thấy nhiều bài viết về quyền truy cập thư mục (Cho phép từ tất cả, v.v.), nhưng theo như tôi biết thì tôi đã làm điều đó. Trong httpd-vhosts.conf có đoạn mã sau:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/opt/lampp/htdocs/"
    ServerName localhost
    ServerAlias localhost
    ErrorLog "logs/dummy-host.example.com-error_log"
    CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot "/home/remix/"
    ServerName testproject
    ServerAlias testproject
    <Directory "/home/remix/">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

Tôi cũng đã thêm

127.0.0.1    testproject

vào tập tin / etc / hosts.

Ngoài ra, thư mục / home / remix / chứa tệp index.html và vhost được bật trong httpd.conf.

Có bất cứ điều gì tôi không nhìn thấy?

Chỉnh sửa: Đây là mục nhập error_log của Apache:

[Sat Aug 18 09:15:32.666938 2012] [authz_core:error] [pid 6587] 
[client 127.0.0.1:38873] AH01630: client denied by server configuration: /home/remix/

Nhật ký lỗi của Apache là gì?
Shane Madden

Ah, tôi nghĩ rằng tôi đã quên một cái gì đó ... Tôi đã thêm nó vào bài viết gốc.
RemiX

Bạn đang sử dụng phiên bản nào của Apache?
Shane Madden

Apache / 2.4.2 (Unix)
RemiX

Câu trả lời:


65

Thay đổi cấu hình ủy quyền của bạn:

<Directory /home/remix/>
    #...
    Order allow,deny
    Allow from all
</Directory>

... đến phiên bản Apache 2.4 giống nhau.

<Directory /home/remix/>
    #...
    Require all granted
</Directory>

Xem lại tài liệu tổng quan về nâng cấp để biết thông tin về các thay đổi khác mà bạn có thể cần thực hiện - và lưu ý rằng hầu hết các ví dụ cấu hình và trợ giúp mà bạn tìm thấy trên Google (cũng như trên trang web này) đều đề cập đến 2.2.


2
Nếu tôi có thời gian, tôi sẽ ghi lại một lỗi về điều này bởi vì httpd -t nói rằng không có vấn đề gì khi sử dụng cú pháp cũ hơn và httpd -S cũng không có vấn đề gì. Trong tâm trí của tôi, toàn bộ quan điểm của một trình kiểm tra cấu hình là nó cần được chỉ ra các vấn đề! ... Nếu bạn có một thư mục bạn đang tham khảo với cái này, nó sẽ không hoạt động - đơn giản như vậy. ... Đồng ý với câu trả lời.
Richard T

4

Kiểm tra các quyền trên thư mục. Ví dụ, tôi cá là nó sẽ từ chối quyền truy cập vào bất kỳ ai trừ chính bạn:

$ ls -ld /home/remix
drwx------ 92 remix remix 4096 Aug 17 22:59 /home/remix

Nếu bạn thấy drwx------chính xác, thì đây là trường hợp. Khắc phục bằng cách chạy:

chmod a+x /home/remix

Tôi thấy: drwxrwxr-x 2 phối lại phối lại 4096 ngày 16 tháng 8 09:36 / home / phối lại. Tôi đã thử lệnh dù sao, không có hiệu lực.
RemiX

Ahh, không thể chiến thắng tất cả.
Michael Hampton

3

Đảm bảo rằng người dùng đang chạy httpddịch vụ có quyền truy cập vào thư mục này.


Tôi không chắc người dùng cho httpd là ai hoặc làm thế nào để kiểm tra, nhưng mọi người đều có thể đọc (người dùng / nhóm / người khác).
RemiX

Kiểm tra httpd.conf cho Userparam.
cpt. Lỗi

1
Ok nó nói 'Người dùng không ai' và 'Nhóm nogroup'. Tôi đã thử thay đổi nó thành 'Người dùng phối lại' (là chủ sở hữu của thư mục), nhưng ngay cả điều đó cũng không giúp được gì.
RemiX

1

"Máy khách bị từ chối bởi cấu hình máy chủ" có nghĩa là chính máy chủ Linux cấm truy cập vào tệp chứ không phải Apache.

Nếu việc cung cấp quyền truy cập thông qua việc thay đổi quyền / quyền sở hữu / thành viên nhóm không giải quyết được vấn đề, nguyên nhân tuyến đường có thể là TỰ TIN cấm truy cập vào bất kỳ thư mục nào không có bối cảnh SE Linux phù hợp như được giải thích trong 'Di chuyển tài liệu ApacheRoot theo Selinux' .

  • Nếu tạm thời vô hiệu hóa SELinux bằng cách làm setenforce 0cho tệp có thể truy cập được
  • Trong khi đó, kích hoạt lại SELinux bằng cách thực setenforce 0hiện lại tệp không thể truy cập được

Sau đó, chắc chắn quyền truy cập bị cấm bởi SELinux cho dù quyền của tệp là gì.


0

Một cách đơn giản khác (nhưng khó hiểu

Userdir.conf được cung cấp chứa một cái gì đó như thế này: (nhưng với Userdir: bị vô hiệu hóa)

$ cat /etc/httpd/conf.d/userdir.conf 
<IfModule mod_userdir.c>
    UserDir enabled
    UserDir public_html
</IfModule>

<Directory "/home/*/public_html">
    AllowOverride FileInfo AuthConfig Limit Indexes
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
</Directory>

Đặc tả thư mục giả định ~ user == / home / user. Chỉ cần thay đổi hoặc thêm đặc tả thư mục cho nơi thực sự là thư mục nhà của người dùng.

Khá rõ ràng nhưng tôi phải mất một lúc để tìm ra !! :-P DUH!

ví dụ ~ người dùng == / nethome / người dùng

<Directory "/nethome/*/public_html">
    AllowOverride All
    Options MultiViews Indexes Includes FollowSymLinks
    Require all granted
</Directory>

Xem thêm ủy quyền mở trên Thư mục đó nói chung.

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.