前提

一个域名
域名已经解析到服务器

更新源

apt update && apt upgrade

安装 Nginx

apt install nginx -y

查看 Nginx 版本

nginx -v

查看 Nginx 运行状态

systemctl status nginx

此时访问 http://your_server_ip 会看到 Nginx 欢迎页面

设置 Nginx 站点

mkdir -p /var/www/yourdomain/html
chmod -R 755 /var/www/yourdomain

增加网站首页页面文件

vi /var/www/yourdomain/html/index.html

键入以下内容:

<html>
  <head>
    <title>MY Website!</title>
  </head>
  <body>
    <h1>Success!!</h1>
  </body>
</html>

创建网站配置文件

vi /etc/nginx/sites-available/yourdomain.conf

键入以下内容:

server {
  listen 80;
  listen [::]:80;
  root /var/www/yourdomain/html;
  index index.html index.htm index.nginx-debian.html;
  server_name yourdomain;
  location / {
    try_files $uri $uri/ =404;
  }
}

启用 Nginx 服务块,将配置文件从站点链接到 Nginx 目录中启用的站点

ln -s /etc/nginx/sites-available/yourdomain.conf /etc/nginx/sites-enabled/

修改、优化配置

vi /etc/nginx/nginx.conf

取消此行注释

server_names_hash_bucket_size 64;

验证 Nginx 配置

nginx -t

如果没有错误,则会输出以下内容:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重启 Nginx 使配置生效

systemctl restart nginx

使用 Let's Encrypt 签发 SSL 证书,开启 HTTPS

首先安装 certbot 包

apt install python3-certbot-nginx -y

开始创建、签发 SSL 证书

certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email youremail@mail.com -d your_domain.com

现在使用 https://yourdomain 访问你的网站,HTTPS已成功开启。

自动更新 Let's Encrypt 证书

Let's Encrypt 证书在 90 天后过期。使用 crontab 定期来检测、更新证书。

crontab -e

下面命令的含义:每天凌晨 8 点,检查服务器上的证书是否会在接下来的 30 天内过期,如果是,则更新它。
使用 --quiet 指令使 certbot 不输出日志信息。

0 8 * * * /usr/bin/certbot renew --quiet

保存并关闭 crontab 文件。
所有证书将自动续期。