零基础搞定GDPR合规网站服务器设置
为什么要调整服务器设置来满足GDPR?
GDPR(通用数据保护条例)要求网站运营者对用户数据负起保护责任。
服务器层面的设置直接影响数据是否会被泄露、日志是否过度留存、传输是否加密。
如果你正在运营面向欧盟用户的网站,下面这几步必须走完。
第一步:强制 HTTPS – 申请 SSL 证书并开启全站加密
数据在传输过程中必须加密。
最省事的方式是使用 Let's Encrypt 免费证书。
宝塔面板用户:
- 进入「网站」→ 选择站点 →「SSL」→ 勾选「Let's Encrypt」→ 点击「申请」→ 开启「强制HTTPS」。
命令行用户(Nginx 为例):
# 安装 Certbot
sudo apt install certbot python3-certbot-nginx -y
# 获取并自动配置证书
sudo certbot --nginx -d 你的域名
# 强制跳转 HTTPS(在 server 块添加)
return 301 https://$host$request_uri;
验证:访问 http://你的域名 应自动跳到 https://,地址栏出现小锁图标。
第二步:日志自动轮转与敏感信息脱敏
服务器日志可能包含用户 IP、User-Agent 等信息。
GDPR 要求日志不能无限期留存,建议保留 7-14 天后自动删除。
宝塔面板:
- 进入「软件商店」→ 安装「日志清理」插件 → 设置保留天数为 7 → 开启定时任务。
命令行配置 logrotate:
# 编辑 Nginx 日志轮转配置
sudo nano /etc/logrotate.d/nginx
# 内容如下:
/var/log/nginx/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
}
# 测试配置
sudo logrotate -d /etc/logrotate.d/nginx
验证:查看 /var/log/nginx/ 下是否只有最近 7 天的日志文件。
第三步:部署 Cookie 同意方案
GDPR 要求用户在 cookie 收集前主动同意。
推荐免费开源的 Cookie Consent 脚本。
操作步骤:
- 在网站
中加入以下代码(建议放到一个独立 JS 文件):
- 创建隐私政策页面(
/privacy),说明你使用哪些 cookie、数据用途和保留期限。
验证:首次访问网站弹窗是否正常显示,点击同意后 cookie 是否写入(按 F12 → Application → Cookies)。
第四步:数据库与敏感字段加密
用户密码必须哈希存储,建议使用 bcrypt。
如果你的网站使用 WordPress,安装插件会自动处理。
对于自定义应用,注意以下配置:
PHP 示例(bcrypt 哈希):
$hashed_password = password_hash($password, PASSWORD_BCRYPT);
// 验证时
if (password_verify($input_password, $hashed_password)) { ... }
数据库连接使用 SSL:
- 宝塔面板 → 数据库 → 开启「SSL 连接」→ 下载证书并按提示配置。
- 命令行:修改 MySQL 配置
[mysqld]段添加ssl-ca、ssl-cert、ssl-key路径。
验证:登录 MySQL 后执行 SHOW VARIABLES LIKE '%ssl%'; 确认 have_ssl 为 YES。
第五步:访问权限与数据导出/删除机制
GDPR 赋予用户“被遗忘权”。
你需要在网站提供数据导出和删除请求入口。
最简单的方式是在隐私政策页面注明联系方式(邮箱),并定期检查后台的删除功能是否有效。
宝塔面板配合 WordPress 插件(如 WP GDPR Compliance):
- 安装插件 → 启用「数据导出」和「数据删除」模块 → 在用户资料页出现对应按钮。
验证:模拟用户发送删除请求,确认数据库中的个人数据被彻底清除。
避坑指南:容易忽略的细节
- 日志包含完整 IP 地址:即使日志只留 7 天,IP 也属于个人数据。建议在存储前匿名化最后一段(例如 192.168.1.0)。可用 Nginx
map指令或修改应用日志格式。 - 第三方服务如 Google Analytics:确保开启 IP 匿名化并签订数据处理协议。
- HTTPS 不是终点:内部 API 调用也要强制 HTTPS,避免中间人攻击。
- Cookie 同意不能“默认勾选”:必须用户主动点击“同意”才能设置非必要 cookie。
验证清单:你的服务器是否满足 GDPR 基本要求?
| 检查项 | 当前状态 |
|--------|---------|
| 全站 HTTPS 可用 | 是/否 |
| 日志保留不超过 14 天 | 是/否 |
| 有 Cookie 同意弹窗 | 是/否 |
| 密码使用 bcrypt 等强哈希 | 是/否 |
| 数据库连接使用 SSL | 是/否 |
| 提供数据导出/删除方式 | 是/否 |
如果以上都是“是”,你的服务器设置已经打下良好基础。
记得定期复查每条配置,因为服务器环境会随着更新变化。
如果你在处理过程中遇到报错,先检查 SSL 证书是否过期、日志路径是否正确、Cookie 脚本是否被其他脚本冲突。
完成这六步,你就能向用户证明你认真对待数据保护了。