使用 NGINX 创建 Web 服务器并使用 Certbot 保护它

HTTPS 不再是奢侈品。 你必须在你的网站上有它。

Let’s Encrypt 项目使免费部署 SSL 证书变得更加容易,但每隔几个月就需要更新一次。

证书机器人 为您省去麻烦,因为它会自动部署新证书并更新现有证书。

您可以轻松地将 certbot 与 Nginx 一起使用。 想知道如何?

在本教程中,我将向您介绍以下内容:

  • 安装 NGINX
  • 添加服务器块
  • 安装和使用 certbot

当然,如果已经配置,您可以跳过任何部分。

⚠️要学习本教程,您必须有一个注册域名。

在本教程中,我将使用 AWS VM。 但是你可以使用任何你喜欢的。

只需确保拥有公共 IP; 否则,您将无法将其用作 Web 服务器(这是我之前犯的错误)。

那么让我们从安装 NGINX 开始吧。

1. 在 Ubuntu 上安装 NGINX

由于 NGINX 在 Ubuntu 的默认存储库中可用,因此可以使用以下命令轻松安装它:

sudo apt install nginx

要验证安装,请检查安装的版本:

nginx -v

使用以下命令启动 NGINX 服务并使其在每次启动时启动:

sudo systemctl start nginx && sudo systemctl enable nginx

如果您正在使用 UFW 防火墙(您必须使用),请允许 NGINX 通过它:

sudo ufw allow 'nginx full'

2. 设置 NGINX 服务器块

要设置 NGINX 服务器块,请使用以下命令并替换 sudoersagar.de 使用您自己的域:

sudo mkdir -p /var/www/sudoersagar.de/html

接下来,使用 chown 命令将目录的所有者更新为当前用户:

sudo chown -R $USER:$USER /var/www/sudoersagar.de/html

并使用 chmod 命令更改目录的权限:

sudo chmod -R 755 /var/www/sudoersagar.de

现在,让我们创建一个示例 HTML 索引页面:

nano /var/www/sudoersagar.de/html/index.html

我的索引页面包含以下内容,您也可以使用相同的内容:

<html>
    <head>
        <title>Greetings from Sagar Sharma</title>
    </head>
    <body>
        <h1>Success!  The sudoersagar server block is working!</h1>
    </body>
</html>

Save 更改并退出 nano 文本编辑器。

接下来,您必须创建一个名为 sites-enabled:

sudo mkdir /etc/nginx/sites-enabled 

现在,让我们创建一个简单的 NGINX 服务器块:

sudo nano /etc/nginx/sites-available/sudoersagar.de
server {
        listen 80;

        root /var/www/sudoersagar.de/html;
        index index.html;

        server_name sudoersagar.de www.sudoersagar.de;

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

如果您不知道服务器块上使用的是什么,这里有一个简短的解释:

Save 更改并退出文本编辑器。

要启用您的网站,您必须创建一个软链接 sites-availablesites-enabled:

sudo ln -s /etc/nginx/sites-available/sudoersagar.de /etc/nginx/sites-enabled/

最后,使用以下命令测试配置文件:

sudo nginx -t
测试 NGINX 配置文件

如果一切都正确完成,您将获得与上图相同的输出。

现在,重新加载 NGINX 配置:

sudo nginx -s reload

3.创建DNS A记录

通过 DNS A 记录,您可以将域映射到 NGINX 公网 IP 地址。

对于大多数提供商而言,该过程非常简单。 在这里,我使用的是 google 域。

在 Ubuntu 中创建 DNS A 记录

选择,

  • A 作为一种类型
  • 300 对于 TTL(生存时间)
  • 添加公网IP地址 data 场地
  • 做同样的 www 主机名

Save 记录。

反思这些变化需要时间(我的情况是 2 分钟)。

要检查,您可以使用带域名的 dig 命令:

dig sudoersagar.de
使用 dig 命令检查网站

如果它已启动并正在运行,它将显示您用于该域的 IP 地址。

4.设置certbot

要设置 certbot,我将使用 snap(由 Canonical 开发的包管理器)。

第一步是删除 Ubuntu 系统上所有现有的 certbot 包:

sudo apt remove certbot 

但是,如果您使用的不是 Ubuntu,则必须手动配置快照。

为此,我们有专门的教程:

完成设置后,使用以下命令安装 certbot:

sudo snap install --classic certbot

最后,创建指向 certbot 目录的符号链接:

sudo ln -s /snap/bin/certbot /usr/bin/certbot

要验证安装,请检查已安装的 certbot 版本:

certbot --version

5.安装证书

⚠️您每周可以申请 50 张证书(最多)。

由于您每周可以申请的证书数量有限,因此使用测试证书是查找可能错误的最佳做法。

要安装测试证书,请使用以下命令:

sudo certbot --nginx --test-cert

它会询问以下内容:

  • Enter 您的电子邮件地址以接收紧急续订和政策变更。
  • 使用链接下载条款和条件的 PDF,然后按 Y 如果您同意,请按回车键。
  • 订阅邮件列表是可选的,您将通过该列表接收新闻通讯。
  • 它将列出请求的可用域名。 您可以手动选择一个或两个。 如果您想要列出的每个域的证书,请将其留空并按回车键(我就是这样做的)。
使用 HTTPS 测试证书使用 certbot 查找任何错误

如果没有发现错误,您可以继续安装实际证书:

sudo certbot --nginx

它会问同一组问题,但会添加一个不同的问题。

由于您已经安装了测试证书,因此您有两种选择:

  • 重新安装现有证书(在我的例子中是测试证书)
  • 更新和更换证书

选择第二个选项并回车:

在 NGINX 上使用 certbot 安装 HTTPS 证书

就是这样! 您已使用 HTTPS 保护您的网站。

现在,如果您检查,到该站点的连接将得到保护:

站点由 let's encrypt 保护

Certbot 计划每 12 小时运行一次,并将在现有证书过期时更新证书。 您可以使用以下方法检查时间:

systemctl list-timers
在 Ubuntu 上列出定时器

如果你想手动更新它们,你可以使用以下命令:

sudo certbot renew

想要实时修补您的 Ubuntu 服务器?

作为最强大的操作系统之一,您可以在不重新启动的情况下实时修补您的 Ubuntu 服务器。

是的,它就是这么强大。 想学习如何? 给你:

我希望您会发现本指南对您有所帮助。

如果您在执行给定步骤时遇到任何错误,请告诉我。

此外,如果您对我接下来应该介绍的内容有任何建议,请在评论中告诉我。