Apache Virtualhost 403 bị cấm


123

Gần đây tôi đã cố gắng thiết lập một máy chủ thử nghiệm với Apache. Các trang web phải chạy dưới tên miền www.mytest.com. Tôi luôn luôn nhận được một 403 Forbiddenlỗi. Tôi đang dùng phiên bản máy chủ Ubuntu 10.10. Các tài liệu gốc là theo dir /var/www. Sau đây là các cài đặt của tôi:

Nội dung của / var / www

ls -l /var/www/

total 12
drwxr-xr-x 2 root root 4096 2011-08-04 11:26 mytest.com
-rwxr-xr-x 1 root root 177 2011-07-25 16:10 index.html

Nội dung của tệp máy chủ trên máy chủ (với IP 192.168.2.5)

cat /etc/hosts

127.0.0.1 localhost 
127.0.1.1 americano
192.168.2.5 americano.mytest.com www.mytest.com

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Cấu hình trang web

<VirtualHost *>
ServerAdmin admin@mytest.com
ServerName www.mytest.com
ServerAlias mytest.com

DocumentRoot "/var/www/mytest.com"

ErrorLog /var/log/apache2/mytest-error_log
CustomLog /var/log/apache2/mytest-access_log combined

#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/var/www/mytest.com">
Options -Indexes FollowSymLinks
AllowOverride None

Order allow,deny
Allow from all
</Directory>
</VirtualHost>

Tôi không có .htaccesstập tin trong tài liệu gốc của tôi. Các quyền được đặt chính xác (có thể đọc được bằng dữ liệu www).

Nếu tôi nhập địa chỉ IP từ máy tính để bàn của mình, trang web sẽ hiển thị chính xác. Tôi đã thay đổi tệp máy chủ trên máy tính để bàn của mình để trỏ www.mytest.comđến IP của máy chủ. Khi tôi sử dụng nó, tôi nhận được 403. Vì nhiều chức năng của trang web này nhạy cảm với tên ngồi, tôi phải có thể truy cập trang web theo tên miền.

Một điều thú vị nữa là, ngay cả khi tất cả các tệp nhật ký được tạo đúng, chúng không có thông tin liên quan đến lỗi này.

Tôi bị mắc kẹt. Ai có thể giúp đỡ?


bạn có thể thêm nội dung của: sudo sh -c ". /etc/apache2/envvars; apache2 -S"(danh sách Virtualhost) và:sudo sh -c ". /etc/apache2/envvars; grep -R Listen /etc/apache2/*|grep -v \"#\"; grep -R NameVirtual /etc/apache2/*|grep -v \"#\""
regilero

Lệnh đầu tiên trả về sau: VirtualHost configuration: 192.168.2.5:* www.mytest.com (/etc/apache2/sites-enabled/mytest.com:1) Syntax OK Lệnh thứ hai trả về: /etc/apache2/ports.conf:Listen 80 /etc/apache2/ports.conf: Listen 443 /etc/apache2/ports.conf: Listen 443 /etc/apache2/conf.d/virtual.conf:NameVirtualHost *
Yuchen Wang

1
thử trên serverfault.com
regilero

Câu trả lời:


296

Apache 2.4.3 (hoặc có thể sớm hơn một chút) đã thêm một tính năng bảo mật mới thường dẫn đến lỗi này. Bạn cũng sẽ thấy một thông báo nhật ký có dạng "máy khách bị từ chối bởi cấu hình máy chủ". Tính năng này yêu cầu danh tính người dùng để truy cập vào một thư mục. Nó được bật bởi DEFAULT trong httpd.conf gửi cùng với Apache. Bạn có thể thấy việc kích hoạt tính năng với chỉ thị

Require all denied

Điều này về cơ bản nói để từ chối truy cập cho tất cả người dùng. Để khắc phục sự cố này, hãy xóa chỉ thị bị từ chối (hoặc tốt hơn nhiều) thêm chỉ thị sau vào các thư mục bạn muốn cấp quyền truy cập vào:

Require all granted

như trong

<Directory "your directory here">
   Order allow,deny
   Allow from all
   # New directive needed in Apache 2.4.3: 
   Require all granted
</Directory>

3
Tôi muốn lưu ý rằng nếu bạn gặp vấn đề này khi sử dụng máy chủ ảo, bạn sẽ cần thêm "Yêu cầu tất cả được cấp" cho mỗi cài đặt máy chủ ảo bên trong tệp apache / conf / Extra / httpd-vhosts.conf.
Soundfx4 14/07/2015

1
Tôi đã thêm chỉ thị này /etc/apache2/apache2.confvà nó đã giúp, cảm ơn bạn!
DmitMedv

@ Soundfx4, không có thư mục nào được gọi apache/conf/extrabên trong/etc/apache2
Black

Tôi đã thêm /var/dev/website.com và đang gặp lỗi 403. Thêm chỉ thị được đề xuất vào /etc/apache2/apache2.conf (ubfox) đã thực hiện thủ thuật này. Cảm ơn các bạn!
LoveFineArt

Cảm ơn ngài. Apache ngày càng khó hơn để làm việc trong những ngày này ...
OoDeLally

15

Đối với apache Ubuntu 2.4.7, cuối cùng tôi thấy bạn cần liệt kê danh sách máy chủ ảo của bạn trong apache2.conf

# access here, or in any related virtual host.
<Directory /home/gav/public_html/>
    Options FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

8

Đây có thể là một vấn đề quyền.

mỗi đường dẫn cha mẹ đến gốc tài liệu ảo phải có thể đọc được, có thể ghi và có thể thực thi được bởi người dùng httpd của máy chủ web

theo trang này về lỗi Apache 403.

Vì bạn đang sử dụng Allow from all, đơn đặt hàng của bạn không quan trọng, nhưng bạn có thể thử chuyển đổi nó Deny,Allowthành đặt hành vi mặc định thành "cho phép".


4
Có thể viết được không? có thật không? Tôi không chắc chắn
php-dev

5

Di chuyển mệnh đề Directory ra khỏi virtualhost và đặt nó trước khi khai báo virtualhost.

Thả tôi hạt dẻ trong một thời gian dài quá. Không biết tại sao. Đó là một thứ Debian.


Ái chà, thật lạ.
kako-nawao 10/11/2015


0

Nếu bạn đã làm mọi thứ đúng, chỉ cần cung cấp thư mục nhà cho phép như:

sudo chmod o+x $HOME

sau đó

sudo systemctl restart apache2

0

Vấn đề là sự cho phép truy cập tập tin là sai.

Tôi đã thay đổi các quyền của thư mục và nó hoạt động.


0

Tôi cũng gặp vấn đề này trên Arch Linux ... nó làm tôi mất một thời gian nhưng giờ tôi rất vui vì đã tìm thấy lỗi của mình:

Thư mục của tôi với các .htmltập tin trong tài khoản của tôi.
Tôi đặt mọi thứ trên r+xnhưng tôi vẫn nhận được 403lỗi.
Hơn tôi đã hoàn toàn quay lại và cố gắng thiết lập thư mục nhà của tôi để thực thi mà giải quyết vấn đề của tôi.


-1

Tôi chỉ dành vài giờ cho vấn đề ngu ngốc này

Đầu tiên, thay đổi quyền sử dụng điều này trong thiết bị đầu cuối

find htdocs -type f -exec chmod 664 {} + -o -type d -exec chmod 775 {} +

Tôi không biết sự khác biệt giữa 664 và 775 Tôi đã làm cả 775 như thế này Ngoài ra htdocs cần đường dẫn thư mục chẳng hạn cho tôi

/usr/local/apache2/htdocs 

find htdocs -type f -exec chmod 775 {} + -o -type d -exec chmod 775 {} +

Đây là điều ngu ngốc khác quá

đảm bảo rằng liên kết src hình ảnh của bạn là tên miền của bạn chẳng hạn

src="http://www.fakedomain.com/images/photo.png"

Hãy chắc chắn để có

EnableSendfile off in httpd.conf file
EnableMMAP off in httpd.conf file

Bạn chỉnh sửa những người sử dụng pico trong thiết bị đầu cuối

Tôi cũng đã tạo một thư mục cho các hình ảnh cụ thể để khi bạn nhập vào thanh địa chỉ trình duyệt domainname.com/images, bạn sẽ nhận được một danh sách các ảnh có thể được tải xuống và cần được tải xuống thành công để chỉ ra các tệp hình ảnh đang hoạt động đúng

<Directory /usr/local/apache2/htdocs/images>
AddType images/png .png
</Directory>

Và đó là những giải pháp tôi đã thử, bây giờ tôi có hình ảnh hoạt động ... yay !!!

Vào (các) vấn đề tiếp theo

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.