配置需求
项目 | 说明 |
---|---|
操作系统 | Linux(推荐CentOS或Ubuntu);Windows Server(视熟悉度选择) |
Web服务器软件 | Nginx/Apache + PHP-FPM(动态站点);纯静态可仅用Nginx反向代理 |
数据库 | MySQL/MariaDB(独立建库)、SQLite(文件型轻量级方案) |
域名解析 | 主域名指向主机IP,通过子域名区分两站点(如 site1.example.com , site2.example.com ) |
SSL证书 | Let’s Encrypt免费通配符证书或单域名证书×2 |
实现步骤详解
✅ 第一步:规划目录结构(以Nginx为例)
/var/www/html # 根目录(建议创建软链接管理多站点) ├── site1 # 第一个网站的文档根路径 │ └── index.php # 例:WordPress安装包上传至此 └── site2 # 第二个网站的文档根路径 └── public/ # Node.js应用入口文件存放处
⚠️ 权限设置:确保每个站点目录归属对应用户组(如
chown -R www-data:www-data /var/www/html/site
),避免跨站脚本攻击风险。
🔧 第二步:配置Nginx虚拟主机
编辑配置文件 /etc/nginx/conf.d/default.conf
,添加如下内容:
server { listen 80; server_name site1.example.com; # 替换为你的实际子域名 root /var/www/html/site1; # 对应第一步的目录路径 index index.php index.html; location / { try_files $uri $uri/ @rewrites; # 支持PHP解析规则 } # PHP处理块(若需动态语言支持) location ~ .php$ { fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # 根据实际PHP版本调整 include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } # 同理新增第二个server块,修改server_name和root路径即可 server { listen 80; server_name site2.example.com; root /var/www/html/site2; ... # 其他配置同上 }
📌 技巧:可通过
include /etc/nginx/sites-enabled/.conf
实现模块化管理多个站点配置。
📁 第三步:数据库隔离策略
站点 | 数据库名 | 用户名 | 主机 | 端口 |
---|---|---|---|---|
Site1 | db_site1 | user_site1 | localhost | 3306 |
Site2 | db_site2 | user_site2 | 0.0.1 | 3306 |
💡 安全实践:为每个数据库设置独立IP白名单访问控制,禁用远程Root登录。
🔐 第四步:HTTPS部署(Let’s Encrypt)
使用Certbot工具一键申请证书:
sudo apt install certbot python3-certbot-nginx # Debian系发行版示例 sudo certbot --nginx -d site1.example.com -d site2.example.com --expand
📝 注意:部分服务商可能限制单IP绑定多域名,此时需改用SNI技术支持的SSL配置。
性能优化建议
维度 | 方案 |
---|---|
CDN加速 | Cloudflare等免费CDN缓存静态资源 |
Gzip压缩 | Nginx开启gzip on; 减少传输体积 |
缓存策略 | 对非频繁更新页面设置Cache-Control: max-age=3600 |
连接复用 | HTTP/2协议启用多路复用降低握手开销 |
常见问题与解答
Q1: 如果两个网站使用相同的端口会怎样?
A: Nginx基于名称虚拟主机技术(Name-based Virtual Hosting)允许同一IP+端口下共存多个域名,但要求客户端请求头中包含完整的Host字段,现代浏览器均支持此特性,无需担心冲突。
Q2: 如何防止一个网站的流量突增影响另一个?
A: 可通过以下方式实现资源隔离:
1️⃣ 进程级限制:为每个站点配置独立的PHP-FPM池(修改/etc/php/7.x/fpm/pool.d/www.conf
中的listen
参数);
2️⃣ 带宽管控:使用TC命令限制特定IP段的最大带宽;
3️⃣ 监控告警:部署Prometheus+Grafana实时观察各站点资源占用情况
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/108581.html