在轻量服务器上做多个网站,需要怎么设置域名和端口?

在轻量服务器上部署多个网站,可以通过以下几种方式设置域名和端口:

一、基于域名的虚拟主机(推荐)

1. Nginx 配置示例

# 网站1:www.site1.com
server {
    listen 80;
    server_name www.site1.com site1.com;

    location / {
        root /var/www/site1;
        index index.html index.php;
    }
}

# 网站2:www.site2.com
server {
    listen 80;
    server_name www.site2.com site2.com;

    location / {
        root /var/www/site2;
        index index.html index.php;
    }
}

2. Apache 配置示例

# 网站1
<VirtualHost *:80>
    ServerName www.site1.com
    ServerAlias site1.com
    DocumentRoot /var/www/site1
</VirtualHost>

# 网站2
<VirtualHost *:80>
    ServerName www.site2.com
    ServerAlias site2.com
    DocumentRoot /var/www/site2
</VirtualHost>

二、基于端口的方式

1. 不同端口对应不同网站

# 网站1:使用80端口
server {
    listen 80;
    server_name _;
    root /var/www/site1;
}

# 网站2:使用8080端口
server {
    listen 8080;
    server_name _;
    root /var/www/site2;
}

# 网站3:使用8081端口
server {
    listen 8081;
    server_name _;
    root /var/www/site3;
}

三、域名解析设置

1. 域名服务商处配置

A记录:
www.site1.com → 服务器IP
site1.com → 服务器IP

www.site2.com → 服务器IP
site2.com → 服务器IP

2. 本地hosts测试(开发环境)

服务器IP www.site1.com
服务器IP www.site2.com

四、完整部署步骤

步骤1:准备网站目录

# 创建网站目录
sudo mkdir -p /var/www/{site1,site2,site3}

# 设置权限
sudo chown -R www-data:www-data /var/www/

步骤2:安装并配置Web服务器

# 安装Nginx
sudo apt update
sudo apt install nginx

# 创建配置文件
sudo nano /etc/nginx/sites-available/site1.conf
sudo nano /etc/nginx/sites-available/site2.conf

# 启用站点
sudo ln -s /etc/nginx/sites-available/site1.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/site2.conf /etc/nginx/sites-enabled/

# 测试配置
sudo nginx -t

# 重启Nginx
sudo systemctl restart nginx

步骤3:防火墙设置

# 开放端口
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 8080/tcp  # 如果使用非标准端口

# 启用防火墙
sudo ufw enable

五、HTTPS配置(SSL证书)

使用Let’s Encrypt

# 安装Certbot
sudo apt install certbot python3-certbot-nginx

# 为多个域名申请证书
sudo certbot --nginx -d site1.com -d www.site1.com
sudo certbot --nginx -d site2.com -d www.site2.com

# 自动续期
sudo certbot renew --dry-run

六、反向XX配置(适用于Node.js、Python等应用)

# Node.js应用
server {
    listen 80;
    server_name app.site1.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

# Python Django应用
server {
    listen 80;
    server_name api.site2.com;

    location / {
        proxy_pass http://localhost:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

七、最佳实践建议

  1. 域名方式优先:尽量使用基于域名的虚拟主机,用户体验更好
  2. 统一端口:对外统一使用80(HTTP)和443(HTTPS)端口
  3. 目录分离:每个网站使用独立的目录,便于管理
  4. 日志分离:为每个网站配置独立的访问日志
  5. 资源限制:根据需求为不同网站设置资源限制

八、常见问题解决

  1. 403 Forbidden错误

    # 检查目录权限
    sudo chmod -R 755 /var/www/site1
    sudo chown -R www-data:www-data /var/www/site1
  2. Nginx配置测试

    sudo nginx -t
    sudo systemctl reload nginx
  3. 查看端口占用

    sudo netstat -tlnp
    sudo lsof -i :80

选择哪种方式取决于具体需求:

  • 对外服务:推荐基于域名的方式
  • 内部服务或测试:可以使用端口区分
  • API服务:可以考虑使用子域名或路径区分
云服务器