多域名同一服务器多站点搭建配置
在单一服务器上配置多域名指向不同站点(即多站点托管)通常涉及Web服务器(如Nginx或Apache)的虚拟主机配置。以下是基于Nginx和Apache的配置指南:一、Nginx 多域名配置
1. 基本原理
Nginx通过server块区分不同域名,每个server块监听特定域名并指向对应的站点目录。
2. 配置步骤
[*]创建站点目录
为每个域名创建独立的目录,例如:
mkdir -p /var/www/site1.com/html
mkdir -p /var/www/site2.com/html
[*]配置Nginx虚拟主机
编辑Nginx配置文件(通常位于/etc/nginx/sites-available/),为每个域名创建单独的配置文件(如site1.com.conf和site2.com.conf),或统一在nginx.conf中配置。
示例配置(site1.com.conf):
server {
listen 80;
server_name site1.com www.site1.com;
root /var/www/site1.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
server {
listen 80;
server_name site2.com www.site2.com;
root /var/www/site2.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
[*]启用配置并重启Nginx
# 如果是独立配置文件,需创建符号链接到sites-enabled
ln -s /etc/nginx/sites-available/site1.com.conf /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/site2.com.conf /etc/nginx/sites-enabled/
# 测试配置并重启
nginx -t
systemctl restart nginx
4. HTTPS配置(可选)
[*]使用Let's Encrypt的Certbot为每个域名申请SSL证书:
certbot --nginx -d site1.com -d www.site1.com
certbot --nginx -d site2.com -d www.site2.com
[*]Certbot会自动修改Nginx配置,添加SSL相关指令。
二、Apache 多域名配置
1. 基本原理
Apache通过VirtualHost指令区分不同域名,每个<VirtualHost>块定义一个站点的配置。
2. 配置步骤
[*]创建站点目录
与Nginx类似,为每个域名创建独立目录。
[*]配置虚拟主机
编辑Apache配置文件(通常位于/etc/apache2/sites-available/),为每个域名创建配置文件(如site1.com.conf)。
示例配置(site1.com.conf):
<VirtualHost *:80>
ServerName site1.com
ServerAlias www.site1.com
DocumentRoot /var/www/site1.com/html
<Directory /var/www/site1.com/html>
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
</VirtualHost>
[*]启用配置并重启Apache
a2ensite site1.com.conf# 启用站点
a2ensite site2.com.conf# 同理
systemctl reload apache2
4. HTTPS配置(可选)
[*]使用Certbot申请证书:
certbot --apache -d site1.com -d www.site1.com
三、通用注意事项
[*]DNS解析
确保所有域名的DNS记录(A记录或CNAME)指向服务器的IP地址。
[*]防火墙与端口
[*]确保服务器防火墙(如ufw或firewalld)允许HTTP(80)和HTTPS(443)端口。
[*]如果是云服务器,还需检查安全组规则。
[*]权限问题
[*]确保Web目录(如/var/www/site1.com/html)的权限允许Web服务器用户(如www-data或apache)读写。
[*]示例:chown -R www-data:www-data /var/www/site1.com
[*]测试配置
[*]访问域名验证站点是否正常加载。
[*]使用curl -I http://site1.com检查HTTP头是否正确。
四、高级配置
[*]通配符域名:若需支持子域名(如*.example.com),在server_name中使用通配符(Nginx/Apache均支持)。
[*]负载均衡:结合反向代理(如Nginx)实现多服务器负载均衡。
[*]容器化部署:使用Docker或Kubernetes管理多站点,每个站点运行在独立容器中。
通过以上步骤,你可以在单一服务器上高效托管多个域名对应的站点。根据实际需求选择Nginx或Apache,并确保配置文件和权限正确无误。
页:
[1]