Apache多域名多站点管理

最近改了一下wordpress的链接格式,导致原先挂在wordpress下面的其他站点url有了歧义,例如domain/site,不知道site是文章分类还是另一个站点,于是就想着能不能用另一个域名直接访问到这些站点,答案是可行的

新域名

可以申请一个新的域名,当然也可以直接在旧的域名解析中添加一条A记录,来获得一个新域名,例如添加一条主机记录为wiki的A记录,指向站点所在服务器ip地址。如果需要使用SSL的话,也可以去申请一张SSL证书,因为免费证书大多只支持单个域名,当然你如果是泛域名证书的话当我没说

Apache配置

打开000-default.conf文件

$ sudo vi /etc/apache2/sites-available/000-default.conf

在最末尾或者你喜欢的地方(不要放在已有节点内部),加上如下配置

<VirtualHost *:80>
	ServerName new.domain                    # 新域名
	ServerAdmin webmaster@localhost
	DocumentRoot /var/www/main/site          # 站点目录
	Redirect permanent / https://new.domain  # 自动跳转至https,如果不用SSL就删除这行
</VirtualHost>

保存后重启apache

$ sudo service apache2 restart

不用SSL的话,这时访问http://new.domain,应该就可以访问到该站点了,需要SSL的话,还需进一步配置

SSL配置

首先将申请好的证书文件通过任意方式上传至服务器,然后打开default-ssl.conf文件

$ sudo vi /etc/apache2/sites-available/default-ssl.conf

<IfModule mod_ssl.c>这个节点下,添加以下内容

	<VirtualHost _default_:443>
		ServerAdmin webmaster@localhost
		ServerName new.domain                    # 新域名
		DocumentRoot /var/www/main/site          # 站点目录
		SSLEngine on
		SSLCertificateFile	path/to/cert         # 证书文件路径
		SSLCertificateKeyFile path/to/key        # 密钥文件路径
		SSLCertificateChainFile path/to/chain    # 证书链文件路径,可选

		<FilesMatch "\.(cgi|shtml|phtml|php)$">
				SSLOptions +StdEnvVars
		</FilesMatch>
		<Directory /usr/lib/cgi-bin>
				SSLOptions +StdEnvVars
		</Directory>
	</VirtualHost>

保存后重启apache,就可以通过https://new.domain访问到站点了

发表回复

电子邮件地址不会被公开。必填项已用 * 标注

Index