Hướng dẫn liệt kê danh sách domain vhost trên Nginx và Apache

Bạn muốn liệt kê danh sách domain vhost trên dịch vụ Nginx nhưng chưa biết phải làm thế nào? Vậy hãy tham khảo ngay bài hướng dẫn của chúng mình nhé.

vhost là gì?

Hướng dẫn liệt kê danh sách domain vhost trên Nginx và Apache 1

Vhost hay Virtual Host là một kỹ thuật cho phép nhiều domain chia sẻ chung một IP. Đây là một phần không thể thiếu trong các máy chủ web như Nginx, Apache,... Bạn có thể thêm domain vào máy chủ và cấu hình chúng một cách riêng lẻ. Và với mỗi cấu hình như vậy sẽ được gọi là vhost (virtual host).

Thao tác liệt kê danh sách domain vhost trên Nginx

Vhost hay Virtual Host là một kỹ thuật cho phép nhiều domain chia sẻ chung một IP. Để liệt kê danh sách domain vhost thì bạn cần chú ý chuẩn cấu hình thông tin Virtual Host của các bạn trên hệ thống Nginx Web Server. Giả sử cấu hình vhost của mình hiện là:

  • Thư mục chứa file cấu hình vhost: /etc/nginx/vhosts/

  • File cấu hình có extension: /etc/nginx/vhosts/*.conf

Vậy để liệt kê các tên miền tương ứng keyword “server_name” thì ta có thể dùng lệnh “find” kết hợp như sau:

# find /etc/nginx/vhosts -type f -name "*.conf" -print0 | xargs -0 egrep '^(\s|\t)*server_name' | sed -r 's/(.*server_name\s*|;)//g' | tr -s ' ' '\n' | sort | uniq

Cửa sổ sẽ trả về kết quả toàn bộ domain bạn đang chạy trên server Nginx.

Chỉ đơn giản vậy thôi bạn đã có thể thống kê nhanh chóng danh sách domain vhost đang được cấu hình trên Nginx Web Server rồi.

Thao tác liệt kê danh sách domain vhost trên Apache

Liệt kê danh sách domain vhost trên Apache là thao tác khá đơn giản với option '-S'. Cách này có thể dùng cho cả các tên gọi chương trình Apache trên CentOS và Ubuntu, chẳng hạn httpd/apache2 hay apachectl/apache2ctl.

Sử dụng option '-S', nó sẽ giúp liệt kê thông tin port cũng địa chỉ IP hay tên miền được cấu hình cho từng website mà người dùng đang sử dụng trên hệ thống. Cùng với đó là những thông tin khác như số dòng line trong file cấu hình tương ứng của vhost.

  • CentOS/Fedora/RHEL
# httpd -S
# apache2 -S
  • Ubuntu/Debian
# apache2 -S
# apache2ctl -S

Output:

VirtualHost configuration: 
1.2.3.4:80 lab1.kdata.vn (/etc/httpd/conf.d/kdata.vn.conf:5)
2.3.4.5:80 lab2.kdata.vn (/etc/httpd/conf.d/kdata.vn.conf:1)
2.3.4.5:443 lab3.kdata.vn (/etc/httpd/conf.d/kdata.vn.conf:38)
Syntax OK

Chỉ với các dòng lệnh đơn giản thì bạn đã có thể liệt kê danh sách domain vhost trên Nginx và Apache rồi. Chúc bạn thành công!

Tổng hợp