Làm cách nào tôi có thể giải quyết lỗi apache2 httpd lỗi trộn lẫn các cổng * và các cổng không * với địa chỉ NameVirtualhost không được hỗ trợ


24

Đây là lỗi tôi gặp phải khi khởi động Apache2:

 * Starting web server apache2
 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
 [Wed Oct 21 16:37:26 2009] [error] VirtualHost *:80 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
 [Wed Oct 21 16:37:26 2009] [error] VirtualHost *:80 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
 [Wed Oct 21 16:37:26 2009] [error] VirtualHost *:80 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
 [Wed Oct 21 16:37:26 2009] [error] VirtualHost *:80 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
 [Wed Oct 21 16:37:26 2009] [warn] NameVirtualHost *:80 has no VirtualHosts

Trước tiên tôi làm theo hướng dẫn này về việc thiết lập Apache để lưu trữ nhiều trang web:

http: //www.debian-adftime.org/articles/412

Sau đó tôi đã tìm thấy một câu hỏi tương tự trên ServerFault và đã thử áp dụng giải pháp, nhưng nó không có ích.

Đây là một ví dụ về cấu hình Virtualhost cuối cùng của tôi:

<VirtualHost *:80>
    ServerAdmin admin@xxx.com
    ServerName  www.xxx.com
    ServerAlias xxx.com

    # Indexes + Directory Root.
    DirectoryIndex index.html
    DocumentRoot /var/www/www.xxx.com

    # Logfiles
    ErrorLog  /var/www/www.xxx.com/logs/error.log
    CustomLog /var/www/www.xxx.com/logs/access.log combined
</VirtualHost>

với tên miền X'd ra để bảo vệ người vô tội :-)

Ngoài ra, tôi có tệp conf.d / virtual.conf được đề cập trong hướng dẫn trông như thế này:

NameVirtualHost *

Điều kỳ lạ là mọi thứ dường như hoạt động tốt cho hai trong số ba trang web.


Đăng cấu hình Apache httpd hoàn chỉnh (!) Của bạn hoặc ít nhất là mỗi dòng NameVirtualhost và <Virtualhost ...>.
joschi

Bạn không thể trộn hai loại trên cùng một ip: port. Tôi đã có một thiết lập trong đó tôi có hai ip, một ip có massvhost bị treo, cái còn lại có tất cả các máy chủ được đặt tên thông thường. Quan trọng hơn, mục tiêu là gì? Bạn đang cố gắng để đạt được điều gì? Những hạn chế của bạn là gì?
Marcin

Câu trả lời:


29

Các địa chỉ IP được đặt tên NameVirtualHostphải khớp với địa chỉ IP trong mỗi thành VirtualHostphần.

Thí dụ:

NameVirtualHost *:80
NameVirtualHost *:81

<VirtualHost *:80>
# ...
</VirtualHost>

<VirtualHost *:81>
# ...
</VirtualHost>

# This will not work!
<VirtualHost *>
# ...
</VirtualHost>

Đọc tài liệu về Máy chủ ảo Apache để biết chi tiết.


Ước gì tôi có thể bỏ phiếu nhiều hơn một lần. Họ thực sự nên gọi điều này rõ ràng hơn trong tài liệu.
Alex W

13

Thay thế này:

NameVirtualHost *

Với cái này:

NameVirtualHost *:80

2
Tôi đánh giá cao câu trả lời đơn giản và mong muốn tôi có thể chấp nhận cả hai
RCampbell

5

Thêm vào các phản hồi, một điều mà tôi nhận thấy là bạn không thể chạy SSL mà không cần khai báo rõ ràng: 80 trên mỗi chỉ thị NameVirtualhost và Virtualhost, apache sẽ không hỗ trợ:

NameVirtualhost *

NameVirtualhost *: 443

Trộn lẫn trong cùng một cấu hình, bạn sẽ gặp lỗi khi nghe apache trên cổng số 0 nếu bạn làm điều đó.

Đối với tôi, tôi chỉ thêm: 80 cho mọi máy chủ để SSL có thể hoạt động một cách tự chủ.


0

Vd

<Virtualhost 85.25.97.252:80>
ServerName domain.com
ServerAlias ​​* .domain.com
ServerAdmin webmaster@domain.com
DocumentRoot "/var/www/domain.com/httpdocs/"
<Directory "/var/www/domain.com/ httpdocs / ">
Chỉ mục tùy chọn FollowSymLinks
AllowOverride Tất cả
đơn hàng cho phép, từ chối
Cho phép từ tất cả
</ Directory>
</ Virtualhost>

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.