文章背景图

用 Nginx 部署一个静态博客

先把环境装好

ssh root@你的服务器IP

# 系统是 Ubuntu 22.04
apt update && apt upgrade -y
apt install -y nginx certbot python3-certbot-nginx

装完 systemctl status nginx 能看见 active 就说明起来了,浏览器访问 IP 应该能看到 Nginx 的欢迎页。

放文件

静态站的好处是没有任何运行时依赖,把构建出来的目录整个拷进去就行:

mkdir -p /var/www/blog
rsync -avz --delete ./site/ root@服务器:/var/www/blog/
chown -R www-data:www-data /var/www/blog

站点配置

/etc/nginx/sites-available/blog:

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/blog;
    index index.html;

    charset utf-8;
    error_page 404 /404.html;

    gzip on;
    gzip_types text/css application/javascript text/html image/svg+xml;
    gzip_min_length 1k;

    location ~* \.(jpg|png|css|js|woff2)$ {
        expires 30d;
        add_header Cache-Control "public";
    }
}

启用并重载:

ln -s /etc/nginx/sites-available/blog /etc/nginx/sites-enabled/blog
nginx -t
systemctl reload nginx

nginx -t 一定要跑,配置写错直接 reload 会让站点挂掉。

上 HTTPS

certbot --nginx -d example.com -d www.example.com

certbot 会自动改配置、加续期定时任务。续期测试:

certbot renew --dry-run

几个踩过的坑

权限:文件拷过去以后属主是 root,Nginx 读不了,页面 403。一句 chown -R www-data:www-data 解决。

中文乱码:charset utf-8; 不写,某些浏览器会把 GBK 猜成默认编码。

404 还是 Nginx 的默认页:只写 error_page 404 /404.html; 不够,还要保证 root 目录下真有 404.html。

改了配置没生效:reload 和 restart 的区别,reload 是热加载,改配置用 reload 就够了。

要不要上 CDN

流量不大就别上。上了 CDN 以后,源站 IP 被隐藏,但备案信息里的 IP 还是要一致,而且 CDN 节点的缓存会让"改了内容不生效"变成一个常见问题,调试成本比省下的带宽高。

  • 作者:一颗星
  • 发表时间:2026-09-28
  • 标签:Nginx、部署、ECS
  • 版权声明:署名-非商业性使用-相同方式共享 4.0(CC BY-NC-SA 4.0),转载请注明出处
  • 站点性质:本站为个人非经营性网站,不接受任何形式的打赏与赞助