Ký tự đại diện ServerName trong máy chủ ảo dựa trên tên Apache?


16

Trên mạng LAN của chúng tôi, tôi đã thiết lập một số TLD 'giả' trong máy chủ DNS, với mục đích sử dụng chúng cho lưu trữ ảo dựa trên tên Apache. Tôi muốn kết hợp điều này với lưu trữ ảo hàng loạt (ví dụ VirtualDocumentRoot) trên máy chủ LAMP Ubuntu 10.04.

Tuy nhiên, tôi không thể lấy nó để chọn đúng vhost!

Dưới đây là tóm tắt về cấu hình Apache:

NameVirtualHost 10.10.0.205

<VirtualHost 10.10.0.205>
   ServerName *.test
   VirtualDocumentRoot /var/www/%-3.0.%-2/test/%1/
   CustomLog /var/log/apache2/access.log vhost_combined
</VirtualHost>

<VirtualHost 10.10.0.205>
   ServerName *.dev
   VirtualDocumentRoot /var/www/%-3.0.%-2/dev/%1/
   CustomLog /var/log/apache2/access.log vhost_combined
</VirtualHost>

Tên máy chủ như www.domain.com.dev , phân giải chính xác thành 10.10.0.205, nhưng luôn chọn vhost hàng đầu, thay vì tên dưới cùng, phù hợp hơn.

Tôi có ấn tượng rằng trước tiên Apache sẽ cố gắng khớp với Tên máy chủ trước khi mặc định là vhost hàng đầu cho một IP nhất định. Tôi đang làm gì sai? Hoặc điều này là không thể và tôi phải sử dụng một IP khác cho mỗi TLD?

đầu ra apachectl -S (cắt xén):

10.10.0.205:*          is a NameVirtualHost
    default server *.test
    port * namevhost *.test
    port * namevhost *.dev

Câu trả lời:


40

Sử dụng ServerAlias, thay vì ServerNamemột mình:

ServerName somename.dev

ServerAlias *.dev


2
Các phiên bản apache gần đây thậm chí sẽ không còn cho phép ký tự đại diện trong ServerName và lỗi sẽ cho bạn sử dụng ServerAlias ​​thay thế.
Quentin Skousen

Tuyệt vời. Điều này đã nhanh chóng và đến điểm. Def giúp tôi tiết kiệm thời gian. Cảm ơn.
Art Geigel

4

Nếu điều này có thể giúp đỡ, chỉ cần hoàn thành một chút câu trả lời của Mo:

Ký tự đại diện trong ServerAlias ​​cũng hoạt động trên các tên miền một phần, chẳng hạn như

ServerName somename.dev

ServerAlias *-mysite.dev

Nó đã cứu mạng tôi thời gian gần đây ^^ (một trang web chính với tên miền phụ cho mỗi ứng dụng phụ như admin-somename.dev, bo-somename.dev, api-somename.dev...)

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.