在一台云服务器上搭建两个或多个网站,可以通过以下几种常见方法实现,具体步骤根据使用的Web服务器软件(如Nginx、Apache)有所不同:
方法1:基于域名的虚拟主机(推荐)
适用场景:两个网站使用不同的域名(如 site1.com 和 site2.com)。
原理:通过配置Web服务器,根据访问的域名自动分发到不同的网站目录。
以Nginx为例:
-
创建网站目录
为每个网站创建独立的目录,存放网站文件:sudo mkdir -p /var/www/site1 sudo mkdir -p /var/www/site2 -
配置虚拟主机
在Nginx的配置目录(通常为/etc/nginx/conf.d/)中为每个网站创建独立的配置文件:-
site1.conf:server { listen 80; server_name site1.com www.site1.com; root /var/www/site1; index index.html; location / { try_files $uri $uri/ =404; } } site2.conf(类似配置,修改域名和目录):server { listen 80; server_name site2.com www.site2.com; root /var/www/site2; index index.html; }
-
-
重启Nginx
sudo nginx -t # 测试配置是否正确 sudo systemctl restart nginx -
绑定域名
在域名解析服务商处将site1.com和site2.com的A记录指向云服务器的IP地址。
以Apache为例:
-
创建网站目录(同上)
-
配置虚拟主机
编辑Apache的虚拟主机配置文件(如/etc/apache2/sites-available/):site1.conf:<VirtualHost *:80> ServerName site1.com ServerAlias www.site1.com DocumentRoot /var/www/site1 ErrorLog ${APACHE_LOG_DIR}/site1_error.log CustomLog ${APACHE_LOG_DIR}/site1_access.log combined </VirtualHost>- 类似创建
site2.conf。
-
启用配置并重启Apache
sudo a2ensite site1.conf site2.conf # 启用配置 sudo systemctl restart apache2
方法2:基于端口的虚拟主机
适用场景:无域名,通过不同端口访问(如 IP:8001 和 IP:8002)。
配置示例(Nginx):
server {
listen 8001;
server_name _;
root /var/www/site1;
}
server {
listen 8002;
server_name _;
root /var/www/site2;
}
注意:需在云服务器安全组/防火墙中放行对应端口。
方法3:基于路径的虚拟主机
适用场景:同一域名下通过路径区分(如 example.com/site1 和 example.com/site2)。
配置示例(Nginx):
server {
listen 80;
server_name example.com;
location /site1 {
alias /var/www/site1;
index index.html;
}
location /site2 {
alias /var/www/site2;
index index.html;
}
}
通用步骤补充
- 上传网站文件
将每个网站的文件上传到对应的目录(如/var/www/site1)。 - 权限设置
确保Web服务器用户(如www-data或nginx)有权限读取文件:sudo chown -R www-data:www-data /var/www/site1 sudo chmod -R 755 /var/www - HTTPS支持
使用Let’s Encrypt为域名免费配置SSL证书:sudo certbot --nginx -d site1.com -d www.site1.com
常见问题
- 端口冲突:确保每个网站监听的端口不重复。
- 权限问题:检查Web服务器用户是否有目录读取权限。
- 域名解析延迟:新域名可能需要几分钟至几小时生效。
通过以上方法,可以在一台云服务器上高效托管多个网站。
云服务器