OffshoreVps
教程2026年10月14日阅读约 9 分钟作者:OffshoreVps 团队

如何用 Nginx 和 HTTPS 在 VPS 上托管网站

在 Ubuntu 上安装 Nginx、创建 server 块、添加免费的 Let's Encrypt 证书并加速。可复制粘贴的命令,20 分钟上线网站。

共享主机很简单,但 VPS 为你提供速度、root 权限,并且没有吵闹的邻居。本指南用 Nginx 带你把全新的 Ubuntu 24.04 或 22.04 服务器变成一个在线的 HTTPS 网站,大约二十分钟。每条命令都可以原样复制。

VPS 上的终端窗口,显示用 Nginx 和 HTTPS 托管网站所用的命令,以“sudo apt update”开头
本指南中你将在服务器上运行的那类命令。

你需要什么

  • 一台至少 1 vCPU 和 1 GB 内存的 VPS(对大多数小型网站来说,我们的基础套餐就足够了)。
  • 一个指向服务器 IP 地址的域名(请参阅我们关于将域名指向 VPS 的指南)。
  • 以 sudo 用户身份进行 SSH 访问。如果服务器是全新的,请先完成基础加固。

1. 安装 Nginx

sudo apt update
sudo apt install -y nginx
sudo systemctl enable --now nginx

在浏览器中打开你服务器的 IP 地址。你应该能看到默认的 Nginx 欢迎页面。如果没有,请检查防火墙是否允许 80 和 443 端口:

sudo ufw allow "Nginx Full"
sudo ufw status

2. 创建网站文件夹

sudo mkdir -p /var/www/example.com/html
sudo chown -R $USER:$USER /var/www/example.com
echo "<h1>It works</h1>" > /var/www/example.com/html/index.html

全文中的 example.com 请替换为你自己的域名。

本指南的步骤依次为:1. 需要什么;2. 1. 安装 Nginx;3. 2. 创建网站文件夹;4. 4. 用 Let's Encrypt 添加免费 HTTPS;5. 5. 让它更快;6. 常见问题
本指南的步骤,按顺序排列。

3. 添加 server 块

sudo nano /etc/nginx/sites-available/example.com
server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;
    root /var/www/example.com/html;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

启用它,测试配置并重新加载:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

4. 用 Let's Encrypt 添加免费 HTTPS

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com

Certbot 会编辑你的 server 块,把 HTTP 重定向到 HTTPS,并安装一个定时器自动续期证书。用 systemctl list-timers | grep certbot 检查该定时器。

5. 让它更快

为静态文件开启压缩和浏览器缓存。把以下内容添加到 server 块内:

gzip on;
gzip_types text/css application/javascript application/json image/svg+xml;

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

之后重新加载 Nginx。对于 WordPress 等动态网站,请安装 PHP-FPM 并将 .php 请求交给它处理,或在前面加一个缓存插件。

常见问题

  • 403 Forbidden:Nginx 无法读取该文件夹。请检查所有权,以及每个上级目录是否可执行(chmod o+x)。
  • Certbot 失败:域名尚未指向服务器,或 80 端口被封锁。
  • 仍显示默认页面:删除 /etc/nginx/sites-enabled/default 并重新加载。