起因
为了贪图便宜和方便外网访问,选购了阿里云的轻量应用服务器。但官网默认只支持一个站点的访问,为了实现多站点访问,在网上找了许多方法,在此做个总结。
本次的多站点配置为多个域名访问不同的目录实现的,其实就是基于 Apache 的多站点配置。
服务器版本
我所选择的是最便宜的一款了,服务器为 CentOS 7.3,官方自带了 LAMP 6.1.0 软件,如下图是本次的实验配置。
第一步 绑定域名
首先确保已经在控制台进行了域名绑定,具体的绑定方法参考官方文档。
第二步 配置 Apache
远程登录服务器开始配置 Apache,Apache 的默认配置文件地址为 /usr/local/apache/conf/httpd.conf,输入如下命令进行编辑
vi /usr/local/apache/conf/httpd.conf
在配置文件中找到 Include conf/extra/httpd-vhosts.conf 下面这段,并将开头的 # 号删除,
这个操作的意思是启用 httpd-vhosts.conf 配置文件,多站点的配置之后就是要在这个文件中进行操作,所以要记住这个文件的位置,以方便接下来的操作。
接着继续查找 ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/home/www/logs/php-fpm.sock|fcgi://127.0.0.1/home/www/htdocs 这段,在开头加上 # ,如果已经添加可忽略。
第三步 配置多站点
编辑上面的这个 httpd-vhosts.conf 文件
vi /usr/local/apache/conf/extra/httpd-vhosts.conf
将默认的配置注释掉,方便配置错误时进行恢复。
每一个 VirtualHost 块为一个站点配置。
<VirtualHost *:80>
ServerAdmin webmaster@serveradmin.com
DocumentRoot "/home/www/htdocs/aaa"
ServerName aaa.com
ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/home/www/logs/php-fpm.sock|fcgi://127.0.0.1/home/www/htdocs/aaa/
</VirtualHost>
同时也可以为一个站点配置多个域名,在 ServerName 下添加一行 ServerAlias 域名用空格隔开,如下
<VirtualHost *:80>
ServerAdmin webmaster@serveradmin.com
DocumentRoot "/home/www/htdocs/aaa"
ServerName aaa.com
ServerAlias son.aaa.com ccc.com
ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/home/www/logs/php-fpm.sock|fcgi://127.0.0.1/home/www/htdocs/aaa/
</VirtualHost>
重启服务
重启 Apache 后就可以在浏览器中查看效果了。
/usr/local/apache/bin/apachectl restart
总结
其实这个跟普通的 Apache 配置多站点是一样的,只是要注意一下域名的绑定要在阿里控制台进行,关于 Apache 更多的配置可参考官方文档。