Làm cách nào để tắt root tài liệu mặc định trong Apache?


13

Tôi lưu trữ một số trang web trên máy chủ của tôi chạy Apache HTTPd. Mỗi trang web có tên miền riêng hoặc tên miền phụ và máy chủ ảo. Vì vậy, tôi không cần root tài liệu mặc định. Có thể vô hiệu hóa DocumentRoottrong /etc/httpd/conf/httpd.conf?

Câu trả lời:


10

Cảm ơn các câu trả lời khác. Tôi đã giải quyết nó bằng cách thêm một máy chủ ảo mặc định mà không có bất kỳ quyền. Toàn cầu DocumentRootServerNamecác tùy chọn phải khớp với các tùy chọn được chỉ định trong máy chủ ảo.

/etc/httpd/conf/httpd.conf

...
ServerName <server-ip>:80

DocumentRoot "/var/www/html"

<Directory />
    Order Deny,Allow
    Deny from all
    Options None
    AllowOverride None
</Directory>
...

/etc/httpd/conf.d/default.conf

<VirtualHost *:80>
        ServerName <server-ip>
        DocumentRoot /var/www/html
</VirtualHost>

Bằng cách này, tôi nhận được một tin nhắn Cấm 403 khi máy chủ được truy cập trực tiếp bởi ip, đó chính xác là những gì tôi muốn. Sẽ tốt hơn nữa nếu tôi không cần /var/www/htmlmột thư mục hiện có cho điều đó, nhưng Apache phàn nàn nếu tôi chỉ định một cái gì đó giống như /dev/nullthay vào đó.


6

Tôi không chắc bạn muốn làm điều đó. Nếu không có vhost mặc định trong cấu hình apache, vhost được xác định đầu tiên sẽ trở thành mặc định .

Tất cả những gì bạn thực sự cần làm là mặc định phục vụ một trang trống.


6

Có và không.

Bạn có thể bình luận hoặc loại bỏ DocumentRootchỉ thị, không có vấn đề. Nhưng điều đó không đạt được nhiều, bởi vì sau đó nó sẽ mặc định vào thư mục mặc định PREFIX/htdocs/nơi PREFIX được đặt khi bạn xây dựng apache.

Khi bạn có Virtualhost, thiết lập tất cả các yêu cầu không được xử lý bởi máy chủ ảo được cấu hình rõ ràng sẽ được xử lý bởi virtualhost mặc định (thường là yêu cầu đầu tiên, nhưng httpd -Ssẽ cho bạn biết).


1

Bất kỳ tệp cấu hình Apache nào có phần mở rộng .confnằm trong /etc/httpd/conf.d/sẽ được đưa vào như một phần của cấu hình Apache. Do đó, để tắt cấu hình trang "Chào mừng" mặc định, chúng ta cần đổi tên cấu hình của nó/etc/httpd/conf.d/welcome.conf:

Bước một di chuyển tệp chào mừng mặc định:

sudo mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.backup 

Bước thứ hai khởi động lại dịch vụ Appache2

sudo systemctl restart httpd

0

Trong /etc/httpd/conf/httpd.conf, nếu chỉ thị Nghe của bạn là

Listen 80

Điều đó có nghĩa là

*:80

Bạn đã xác định một cặp <listener>+ <servename>trong /etc/httpd/conf/httpd.conf và /etc/httpd/conf.d/default.conf giống nhau: *:80+ <server-ip>. Vì vậy, Apache chỉ đưa một tài khoản vào.

Vì vậy, cấu hình vhost của bạn không sử dụng.

/Etc/httpd/conf/httpd.conf của bạn đủ để chặn quyền truy cập vào thư mục / var / www / html của bạn.

Chỉ cần thêm:

<Directory /var/www/html>
    Order Deny,Allow
    Deny from all
    Options None
    AllowOverride None
</Directory>

Vui lòng đọc tới https://httpd.apache.org/docs/2.4/en/vhosts/name-basing.html#ache :

Cách máy chủ chọn máy chủ ảo dựa trên tên thích hợp

Điều quan trọng là phải nhận ra rằng bước đầu tiên trong độ phân giải máy chủ ảo dựa trên tên là độ phân giải dựa trên IP. Độ phân giải máy chủ ảo dựa trên tên chỉ chọn máy chủ ảo dựa trên tên phù hợp nhất sau khi thu hẹp các ứng cử viên vào trận đấu dựa trên IP tốt nhất. Việc sử dụng ký tự đại diện (*) cho địa chỉ IP trong tất cả các chỉ thị Virtualhost làm cho ánh xạ dựa trên IP này không liên quan.

Khi có yêu cầu, máy chủ sẽ tìm đối số phù hợp nhất (cụ thể nhất) dựa trên địa chỉ IP và cổng được sử dụng bởi yêu cầu. Nếu có nhiều hơn một máy chủ ảo chứa kết hợp cổng và địa chỉ phù hợp nhất này, Apache sẽ so sánh thêm các chỉ thị ServerName và ServerAlias ​​với tên máy chủ có trong yêu cầu.

Nếu bạn bỏ qua lệnh ServerName từ bất kỳ máy chủ ảo dựa trên tên nào, máy chủ sẽ mặc định thành một tên miền đủ điều kiện (FQDN) có nguồn gốc từ tên máy chủ hệ thống. Tên máy chủ được đặt ngầm này có thể dẫn đến kết hợp máy chủ ảo phản trực quan và không được khuyến khích.

Vhost dựa trên tên mặc định cho kết hợp IP và cổng Nếu không tìm thấy ServerName hoặc ServerAlias ​​phù hợp trong tập hợp các máy chủ ảo chứa kết hợp địa chỉ IP và cổng phù hợp cụ thể nhất, thì máy chủ ảo được liệt kê đầu tiên phù hợp sẽ được sử dụng.


0

Chỉ cần thay đổi cổng mặc định thành:

Listen 80
Listen 8080 # any fake port

và để lại * .80 trong Virtualhost

Hoạt động với tôi với Apache2 và Centos 7

Nhiều ví dụ bạn có thể tìm thấy trong tài liệu . Hãy xem biến _default_.


0

Để vô hiệu hóa trang này, chúng tôi phải đổi tên tệp /etc/httpd/conf.d/welcome.conf thành một cái gì đó khác hoặc bạn có thể chỉ cần xóa nó nếu bạn không cần nó.

mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf_backup

Đảm bảo rằng Apache được khởi động lại (với quyền root) bằng lệnh:

khởi động lại hệ thống httpd

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.