Cảnh báo khởi động Apache 2: NameVirtualhost *: 80 không có Virtualhost


68

Khi máy chủ Ubuntu Apache của tôi (Apache 2) khởi động, tôi nhận được một thông báo cảnh báo có nội dung:

[warn] NameVirtualHost *:80 has no VirtualHosts

Tuy nhiên, máy chủ web đang hoạt động tốt. Điều gì có thể tôi đã sai trong cấu hình trang web của tôi để làm cho nó cảnh báo?

Các tập tin cấu hình trong câu hỏi (nằm trong /etc/apache2/sites-available) đọc như thế nào (chi tiết bị loại bỏ cho ngắn gọn)

<VirtualHost *>
    <Location /mysite>
        # Configuration details here...
    </Location>

    # Use the following for authorization.
    <LocationMatch "/mysite/login">
        AuthType Basic
        AuthName "My Site"
        AuthUserFile /etc/sitepasswords/passwd
        Require valid-user
    </LocationMatch>
</VirtualHost>

Có thể thực tế là tôi đang sử dụng <Location>là một phần của vấn đề?

Câu trả lời:


53

Thay đổi

<VirtualHost *>

đọc

<VirtualHost *:80>

Hoặc (NameVirtualhost *: 80) của nó được thêm hai lần vào tệp apache2 Confing của bạn. (Theo mặc định, nó được thêm vào trong tệp port.conf)

Điều này sẽ xóa lỗi.

Ngoài ra: bạn không nên bỏ qua lỗi này. Cấu hình của Apache, đặc biệt là khi toàn cầu hóa các máy chủ ảo (ví dụ: Bao gồm /etc/httpd/vhosts.d/*) không ổn định. Điều đó có nghĩa là bạn không kiểm soát thứ tự tải các máy chủ một cách rõ ràng để vhost mặc định cho IP trở thành thứ được tải trước, điều này có thể dẫn đến hậu quả không lường trước được.

Một ví dụ về điều này là vhost mặc định cho một IP cũng sẽ có sẵn trên IP đó, thay vì tên của nó . Điều này có thể khiến thông tin bị rò rỉ trên google khi đề cập đến IP trang web của bạn chứ không phải tên, điều này có thể gây nhầm lẫn cho khách hàng.

Lỗi NameVirtualhost ở trên có thể là một gợi ý rằng apache đã tải mọi thứ theo cách không tối ưu, vì vậy bạn không nên bỏ qua nó.


5
Bạn có thể đặt vhost mặc định như thế này:<VirtualHost _default_ thehostname.com>
Amy B

51

Điều đó có thể là do bạn có lệnh NameVirtualhost ở nhiều nơi.

Tôi không biết về các bản phân phối khác, nhưng trong Ubuntu / Debian, cấu hình của Apache được chia thành nhiều tệp, vì vậy bạn phải kiểm tra xem bản sao đó ở đâu (httpd.conf, apache2.conf, port.conf, conf.d / *).

Oh, và tôi chỉ tìm thấy nguồn lực lớn này với nhiều thông tin: Common Apache cấu hình sai .


3
Liên kết bạn đã cung cấp trông giống như một tài nguyên tuyệt vời để cố gắng hiểu các sắc thái của các tệp cấu hình Apache. Cảm ơn!
Kit Roed

4
Cảm ơn! Đây là vấn đề của tôi - Tôi đã tạo một virtual.conf cho NameVirtualhost, không biết rằng nó đã có trong port.conf
rcampbell

Cảm ơn - Vấn đề tương tự ở đây trong cấu hình mặc định của máy chủ Ubuntu: port.conf chứa NameVirtualhost : 80 và không được lặp lại trong các tệp được kích hoạt / cấu hình trang web !
DrSAR

1
Trong trường hợp của tôi, vấn đề này là do ubfox có NameVirtualHost *:80cả trong ports.confvà trong conf.d/virtualhosts, dường như là một lỗi Ubuntu.
lông mịn

9

Trên hộp Debian / Lenny: Trong /etc/apache2/ports.conf có một câu lệnh NameVirtualhost bổ sung - có thể là nguyên nhân của vấn đề này (cũng có cùng một tuyên bố trong / etc / apache2 / site-Available / default) . Tôi nhận xét rằng tuyên bố và lỗi không đồng ý.


3

Bạn có NameVirtualhost mà không có mục Virtualhost phù hợp.

Điều này thường không gây tử vong, chỉ là một lỗi thông tin.


3

Đó là vì dòng NameVirtualhost của bạn có số cổng trên đó ( :80), nhưng các phần Virtualhost của bạn thì không.


2

NHƯ Rune đề cập, trên các hệ thống Debian NameVirtualhost xuất hiện trong nhiều tệp - port.conf, conf.d / virtual.conf và có thể cả các tệp conf của riêng bạn

Hãy chắc chắn rằng nó tồn tại ở một nơi dưới dạng NameVirtualhost *: 80 (của tôi ở trong conf.d / virtual.conf) và các cảnh báo sẽ xuất hiện.

Như đã đề cập, bạn cũng cần tạo hướng Virtualhost cho mỗi trang có sẵn có định dạng này <VirtualHost *:80>


2

Tôi có cùng một vấn đề, nhưng tôi vô hiệu hóa trang web mặc định của Apache trong một thời điểm. Tôi gõ một cái gì đó như

# a2dissite default

Sau khi tôi thử khởi động lại Apache 2, tôi nhận được thông báo này:

"[cảnh báo] NameVirtualhost *: 80 không có Virtualhost"

Sau đó, tôi kích hoạt lại trang web 'mặc định' của Apache 2 và mọi thứ hoạt động trở lại, lệnh được sử dụng là:

# a2ensite default

Đó là tất cả mọi người!


Đây là lời khuyên tốt nhất.
jini

Lời khuyên tuyệt vời, tôi đang chạy zpanelCP và không có gì hoạt động ngoài cái này. cảm ơn ! :)
Eliran Efron
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.