有了vps如何建站并配置SSL与安全防护的详细教程
2026年06月02日

本文面向有VPS(如Ubuntu 22.04/20.04)的用户,覆盖域名解析、环境安装(Nginx/Apache、PHP、数据库)、Let's Encrypt 免费 SSL、以及常见的安全防护(SSH加固、防火墙、Fail2ban、HTTPS强化、备份与监控)。每一步给出实际命令与示例配置,便于复制执行。
一、准备工作与域名解析
- 购买VPS并获得公网IP;推荐选择稳定提供商并开启备份快照功能。
- 注册域名并在域名提供商处添加A记录指向VPS公网IP(例如:www.example.com -> 1.2.3.4)。
- 确保能通过SSH连接:ssh root@1.2.3.4 。若不能,检查安全组/防火墙规则。
二、系统初始化与基本加固
以Ubuntu为例:
apt update && apt upgrade -y
# 创建非root用户并添加sudo
adduser deployuser
usermod -aG sudo deployuser
# 配置SSH密钥登录(本地生成:ssh-keygen),把公钥放到~/.ssh/authorized_keys
编辑 /etc/ssh/sshd_config 做基础加固:
# 推荐修改项:
PermitRootLogin no
PasswordAuthentication no
# 可选更改端口(如2222),但记得同步防火墙规则
Port 22
重启SSH:systemctl restart sshd
三、防火墙与入侵防护
使用ufw快速配置:
ufw allow OpenSSH
ufw allow 'Nginx Full' # 放行80和443
ufw enable
ufw status verbose
安装并配置fail2ban防止暴力破解:
apt install fail2ban -y
# /etc/fail2ban/jail.local 示例(启用sshd)
[sshd]
enabled = true
bantime = 3600
maxretry = 5
四、安装Web环境(以Nginx + PHP-FPM + MariaDB为例)
apt install nginx mariadb-server php-fpm php-mysql -y
# 启动并设置开机自启(通常安装后自动启动)
systemctl enable --now nginx
systemctl enable --now mariadb
为数据库做基础安全:
mysql_secure_installation
五、配置网站(Nginx server block)
在 /var/www 创建站点目录并设置权限:
mkdir -p /var/www/example.com/html
chown -R www-data:www-data /var/www/example.com
chmod -R 755 /var/www/example.com
创建Nginx站点配置 /etc/nginx/sites-available/example.com:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
location ~ /\.ht { deny all; }
}
启用站点并测试:
ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
六、申请并部署Let's Encrypt SSL(Certbot)
安装certbot并自动为Nginx获取证书:
apt install certbot python3-certbot-nginx -y
certbot --nginx -d example.com -d www.example.com
certbot会自动修改Nginx并配置HTTP->HTTPS重定向。检查自动续期:
certbot renew --dry-run
# 系统会自动创建定时任务/systemd timer 处理续期
七、HTTPS与TLS安全强化
在Nginx的server区加入强制HTTPS与安全Header示例:
# HTTPS server block 示例补充
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header Referrer-Policy "no-referrer-when-downgrade";
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:...'; # 使用来自Mozilla的推荐套件
# 启用OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
注意:套件请参考Mozilla SSL配置生成器根据兼容性选择。
八、应用层安全与防护建议
- 文件与目录权限最小化:Web根目录不使用可写的全局权限,上传目录单独处理。
- 使用WAF:可选安装ModSecurity(与Nginx配合需libmodsecurity)或使用云WAF如Cloudflare。
- 限制请求速率:Nginx可配置limit_req、limit_conn保护。
- 日志与审计:启用access.log与error.log,使用logrotate管理日志大小。
九、备份与监控
备份策略建议:
- 数据库定期导出(mysqldump)并远程同步到对象存储或另一台备份服务器。
- 使用rsync或restic做文件备份,保留多份快照并定期演练恢复。
- 监控:使用Prometheus+Grafana或第三方监控(Pingdom、UptimeRobot)监测可用性与资源。
十、常见问题与检查项
- 证书错误:确保域名解析正确且80端口未被拦截,certbot需要通过HTTP验证。
- HTTPS混合内容:页面引用http资源会被浏览器拦截,检查并替换为https或相对路径。
- 性能与并发:使用缓存(Nginx FastCGI缓存、Redis、CDN)减轻源站压力。
- 安全事件响应:保留日志并定期查看异常,出现可疑访问立即封禁IP并检查系统完整性(AIDE)。
结语
本文概括了从VPS建站到SSL部署与常用安全防护的实操步骤。开始时优先完成系统更新、SSH密钥登录、ufw与fail2ban,再部署Web环境与Let’s Encrypt证书。后续持续做TLS强化、WAF/限速、备份与监控,定期复查配置与日志,能大大降低被攻击风险。如需针对某个环境(如CentOS、Apache、Docker、WordPress特定设置)给出更详尽的命令与配置模板,可告诉我你的系统与应用,我会提供一步步的定制化配置。
- 最新文章
-
行业门户选择云建站需要多少钱 服务商报价和合同注意事项2026-06-02
-
南平小程序开发多少钱 从设计到上线全流程成本解析2026-06-02
-
衡水网站建设公司怎么选 实战指南包含报价参考项目周期与交付标准2026-06-02
- 相关文章
-
个人品牌网站云建站需要多少钱 从自助建站到定制服务的差异2026-06-02
-
阿里云服务器在ecs上建站助手在不同地域节点的兼容性测试2026-06-02
-
AWs云建站一般需要多少钱 运维自动化与安全服务额外开销说明2026-06-02