it-swarm-vi.tech

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

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?

Tệp cấu hình được đề cập (nằm trong /etc/Apache2/sites-available) đọc như thế nào (chi tiết bị xóa vì 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 đề?

68
Kit Roed

Thay đổi

<VirtualHost *>

đọc

<VirtualHost *:80>

Hoặc (NameVirtualhost *: 80) của nó được thêm hai lần vào tệp Confing Apache2 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 : 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. Đ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ó.

53
Dave Cheney

Đó có thể là do bạn có chỉ thị 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/*).

Ồ, và tôi vừa tìm thấy tài nguyên tuyệt vời này với nhiều thông tin hơn: Các cấu hình sai chung của Apache .

51
Ivan

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 ý.

9
Rune

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
Dominic Eidson

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

3
derobert

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
Mo01

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!

2
Tiago