Làm cách nào để tạo tên miền phụ trên một máy chủ ảo dựa trên tên?


27

Tôi có lưu trữ dựa trên tên, hãy gọi nó my.address.com. Bạn tôi có địa chỉ 'đơn giản' address.comvà đưa cho tôi một máy ảo mà tôi có thể truy cập qua SSH.

Anh ta cũng tạo ra một số phép thuật với các cổng và bây giờ, sau khi cài đặt Apache, tôi có thể truy cập /var/wwwthông qua my.address.com.

Vì vậy, câu hỏi là, làm thế nào tôi có thể tạo một tên miền phụ như thế test.my.address.comnào?

Cần có một số phép thuật với Chỉ thị Nghe của Apache , nhưng tôi không thể hiểu được. Ngoài ra, tôi biết cách tạo các trang web có sẵn cục bộ với Apache, nhưng nó không giống nhau.


Bạn sẽ không cần Listen, hãy xem máy chủ ảo Apaches: httpd.apache.org/docs/2.2/vhosts
Der Hochstapler

câu hỏi chính vẫn còn - viết gì trong chỉ thị ServerName?
scythargon

Câu trả lời:


33

Để có thể tạo tên miền phụ, bạn sẽ phải đảm bảo một số điều:

DNS

Để người khác có thể tiếp cận test.my.address.com, trước tiên họ phải có thể phân giải tên đó thành địa chỉ IP của máy ảo của bạn. Làm thế nào có thể được thực hiện?

Những gì bạn của bạn rất có thể đã làm, là tạo một bản ghi A trong address.comvùng, trỏ myđến địa chỉ IP của VM của bạn.

Càng xa càng tốt. Nhưng còn cái gì test.my? Nó có thể không có một mục nào.

Bạn của bạn chỉ đơn giản có thể thêm *.myvào khu vực đó (và trỏ nó đến cùng một địa chỉ IP). Sau đó, tất cả yêu cầu something.my.address.comsẽ được gửi đến VM của bạn. Tuyệt quá!

Máy chủ ảo Apache

Khi VM của bạn có thể đạt được, Apache phải biết cách xử lý yêu cầu. Đây là nơi chúng tôi sử dụng tính năng Máy chủ ảo của máy chủ HTTP Apache.

Tôi thường chạy trên Debian, vì vậy tôi sẽ giải thích điều này với một cấu hình ví dụ trong /etc/apache2/sites-available. Chúng ta hãy có một tập tin được gọi test.my.address.comvà điền thông tin vào đó.

<VirtualHost *:80>
        ServerName test.my.address.com
        ServerAdmin webmaster@my.address.com

        DocumentRoot /var/www/test.my.address.com/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/test.my.address.com/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/test.my.address.com.error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/test.my.address.com.access.log combined
</VirtualHost>

Các thiết lập quan trọng bên trong tập tin này là ServerNamechỉ thị . Điều này cho Apache biết tên máy chủ này sẽ có sẵn. Tên bổ sung có thể được cung cấp với chỉ thị ServerAlias .

Trong trường hợp bạn cũng đang sử dụng Debian, đừng quên sudo a2ensite test.my.address.comsau khi bạn tạo tệp và sudo invoke-rc.d apache2 restart.


Cảm ơn rất nhiều! :) Tôi đã thực hiện phần của mình, và viết email cho bạn bè về phần của anh ấy. Cảm ơn một lần nữa :)
scythargon

@scythargon: Niềm vui của tôi. Chúng tôi ở đây để giúp đỡ :)
Der Hochstapler

Trong khi bạn tôi không trả lời tôi, bạn có thể không? Những gì tôi đã nghĩ về cách thức hoạt động của nó: http-request để test.my.address.comđi đến my.address.comvà sau đó máy chủ Apache của tôi trên VM xử lý nó. Nhưng bạn đã nói rằng máy chủ DNS tại address.com nên biết test.mytrước tất cả những điều này và độc lập với kiến ​​thức về my, tại sao?
scythargon

@scythargon: Đối với bất kỳ yêu cầu HTTP nào đến máy chủ của bạn, trước tiên mọi khách hàng phải tìm ra máy chủ nào yêu cầu phải được gửi. Vì vậy, tên máy chủ phải hợp lệ. Nếu không, họ sẽ chỉ nói "tên đó không tồn tại".
Der Hochstapler
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.