我之前有个博客,尝试搭建了私有dns:
使用centos7+bind9构建私网dns_大橘子的博客-CSDN博客
最终实现像*.nx.com这样的域名,不用在公网注册,就可以访问到内网的主机。适用于企业或学校的私有服务器使用。于是进一步假设,如果nx.com这台服务器上装有多个站点,可以通过虚拟主机的方式去访问多个服务,比如我安装了phpMyAdmin、WordPress、Discuz,可以分别使用pma.nx.com、wp.nx.com、dz.nx.com去访问它们。
近二十年前,项目上web服务用的是windows+iis。测试的时候如果是单机配置多个站点,又不想添加多个ip,那就用端口来区分。真正在互联网上发布站点的时候,都是好多站点共享一个ip的80端口,用域名来区分。后来接触linux,其实原理是一样的。
配置apache:
编辑主配置文件/etc/httpd/conf/httpd.conf,注释掉DocumentRoot来关闭中心主机。
编辑子配置文件/etc/httpd/conf.d/vhost.conf:
#<VirtualHost "192.168.0.79:443">
#<VirtualHost "192.168.0.79">
<VirtualHost "*">
ServerName "pma.nx.com"
DocumentRoot "/var/www/html/pma"
# SSLEngine on
# SSLCertificateFile /etc/pki/CA/pma.crt
# SSLCertificateKeyFile /etc/pki/CA/private/ca.key
</VirtualHost>
#<VirtualHost "192.168.0.79">
<VirtualHost "*">
ServerName "wp.nx.com"
DocumentRoot "/var/www/html/wordpress"
</VirtualHost>
#<VirtualHost "192.168.0.79">
<VirtualHost "*">
ServerName "dz.nx.com"
DocumentRoot "/var/www/html/dz"
</VirtualHost>
我使用的总站点目录是/var/www/html,其下pma、wordpress、dz分别是三个子站点的目录。
然后分别指定ServerName就可以了。因为上篇博客中,私有dns解析的是*.nx.com,所以在局域网内就可以分别用pma.nx.com、wp.nx.com、dz.nx.com去访问这三个站点了。
配置中注释掉的部分,是用于https加密协议的。如果是企业或者校园内部使用,可以找一台服务器充当私有CA,给这台web服务器颁发证书,然后站点配置中指明私钥和证书位置就可以了。
这也就是小规模访问量不大时随便用用还行,如果使用频度高,生产环境复杂,dns、web、db、fs等多个角度,可能要不同程度采用各种辅助技术了。
本文完。