1.
概述与准备
本文面向需要在韩国云/独服上部署多个站点并实现流量隔离与稳定运维的工程师。先准备:一台或多台韩国VPS/独服(推荐带弹性公网IP与私有网络能力)、域名、SSH密钥、基础镜像(Ubuntu 22.04 或 CentOS 8/9)、至少2GB内存(推荐4GB以上)、root或sudo权限。
2.
网络与架构设计
建议架构:对外使用一台或多台反向代理/负载均衡服务器(可用Nginx或HAProxy),内部通过Docker或系统服务托管各站点实例。每个站点独立容器或虚拟环境,分配独立内网端口或私有IP。若预算允许,为关键站点分配独立公网IP以增强隔离。
3.
服务器基础环境配置
步骤:1) 登录服务器并更新系统:Ubuntu:sudo apt update && sudo apt upgrade -y。2) 安装常用工具:sudo apt install -y curl wget git unzip ufw ca-certificates。3) 创建部署用户并配置SSH密钥:adduser deploy && usermod -aG sudo deploy;在~/.ssh/authorized_keys添加公钥并禁用密码登录(/etc/ssh/sshd_config PermitRootLogin no,PasswordAuthentication no),重启ssh。
4.
Docker与Docker Compose部署(推荐隔离方式)
安装Docker:curl -fsSL https://get.docker.com | sh;将deploy用户加入docker组:sudo usermod -aG docker deploy。安装docker-compose(v2)或apt包。用Docker Compose为每个站点建立独立服务:每个站点容器监听不同内网端口或放置到独立docker网络。例如docker-compose.yml中为site1:ports: ["127.0.0.1:8010:80"],site2:["127.0.0.1:8020:80"],仅反向代理能访问127.0.0.1:80系列端口。
5.
反向代理Nginx配置(对外统一入口)
在反向代理服务器安装nginx:sudo apt install -y nginx。为每个域名创建server块示例:server { listen 80; server_name site1.example.kr; location / { proxy_pass http://127.0.0.1:8010; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }。启用HTTP->HTTPS跳转并使用Certbot申请Let's Encrypt证书:sudo snap install --classic certbot && sudo certbot --nginx -d site1.example.kr。
6.
多站点独立资源与进程隔离
推荐策略:每个站点用独立容器/服务,容器内运行PHP-FPM/Node/静态服务,独立日志目录和数据库(或独立数据库用户与库)。如果在同一数据库主机上,使用不同库和严格权限控制。避免多个站点共享同一个目录或同名缓存,否则隔离会被破坏。
7.
基于iptables + tc 的流量隔离与限速(实战命令)
目标:按站点IP或端口做带宽限制与分流。示例:先用iptables打标签:sudo iptables -t mangle -A PREROUTING -p tcp --dport 80 -m owner --uid-owner 1001 -j MARK --set-mark 10(或按dst port)。然后用tc创建队列:sudo tc qdisc add dev eth0 root handle 1: htb default 30;sudo tc class add dev eth0 parent 1: classid 1:10 htb rate 5mbit ceil 5mbit;sudo tc filter add dev eth0 protocol ip parent 1:0 handle 10 fw flowid 1:10。说明:使用--uid-owner仅对本机发起的流量有效,多数场景按端口或ip mark更适用。务必测试并写入启动脚本。
8.
防跨站内部访问与安全策略
若多个站点部署在同一宿主机,防止容器或进程间访问敏感端口:使用Docker自定义网络并设置 --internal,或使用iptables FORWARD规则阻止容器间直连。例如阻止内部网段访问数据库端口:iptables -I DOCKER-USER -s 172.18.0.0/16 -p tcp --dport 3306 -j REJECT。并使用AppArmor/SELinux与最小权限原则降低风险。
9.
日志、监控与故障切换
日志收集:把nginx/access和容器日志集中到主机目录或ELK/Fluentd。监控:Prometheus node_exporter + cAdvisor收集容器指标,Grafana展示带宽、连接数。设置报警(CPU、内存、95%带宽)。故障切换:对重要站点配置二级代理或使用云提供的负载均衡和健康检查+浮动IP自动切换。
10.
备份与发布流程(保证可回滚)
备份策略:数据库每日物理备份并离站存储(rsync/对象存储),网站文件与镜像使用版本化(git +构建镜像)。发布流程建议:CI构建镜像 -> 推送私有registry -> 在目标服务器通过docker-compose pull && docker-compose up -d --no-deps --build siteX;发布前自动化回归测试,失败则自动回滚到上一个镜像标签。
11.
测试与上线检查清单
上线前检查:域名解析正确(A/AAAA/CAA记录)、证书有效、反向代理转发正确(curl -I http://域名)、流量限速规则生效(使用iperf或ab压测)、日志路径与权限正确、备份策略生效、监控报警测试。逐站点灰度上线,观察24-72小时再全量切换。
12.
问:为什么要把反向代理和站点分开部署?答:
问:为什么要把反向代理和站点分开部署?
答:分离能把暴露到公网的攻击面控制在反向代理上,实现统一证书管理、请求限流与WAF策略,同时内部站点运行在私有网络或容器中,减少直接暴露端口,便于扩容与独立部署,增强隔离与安全性。
13.
问:如何在单台韩国服务器上为多个站点实现严格带宽隔离?答:
问:如何在单台韩国服务器上为多个站点实现严格带宽隔离?
答:可用iptables给不同站点流量打mark(按目的端口或源IP),再用tc基于mark分配htb类和队列,指定rate与ceil。同时结合nginx limit_conn/limit_req做请求层限速。测试并把tc脚本加入系统启动项,确保重启后生效。
14.
问:云站群在法律与合规方面需要注意什么?答:
问:云站群在法律与合规方面需要注意什么?
答:在韩国部署服务需遵守当地数据保护与内容法规,若处理用户个人信息需遵守隐私法(例如PIPA)。部分内容(版权、博彩、成人等)在韩国有严格限制,建议咨询法务并与云服务商确认合规条款,必要时使用本地律师服务。
来源:云站群韩国服务器搭建实战从多站点部署到流量隔离的一体化方案