如何为网站或者服务添加HTTPS

前置要求

  • 一台服务器
  • 安装nginx
  • 拥有一个域名

操作

域名设置

一般来说,要配置HTTPS,需要拥有一个域名。我现在这个域名是2023年在dynadot免费领的一年,不知道还有没有这个福利。如果你需要购买一个域名可以试一下dynadot的服务,也可以尝试使用一些免费的域名(一般是二级域名,且体验没那么好)。

在你的域名服务提供商,找到DNS设置
如果主域名已经被占用,可以使用二级域名设置。这里以二级域名为例,一级域名同理。

在二级域名(子域名)设置中添加记录,选择 A ,目标指向你的服务器的公网IP

Clip20240131105305.png

保存后可能需要几分钟的时间来传播。

Nginx 配置

若没安装,以Ubuntu系统为例,可通过以下命令安装:

1
2
sudo apt-get update
sudo apt-get install nginx

可以用以下命令验证是否安装了Nginx。

1
nginx -v

应该会得到类似的版本号信息。

1
nginx version: nginx/1.22.0 (Ubuntu)

/etc/nginx/sites-available/ 目录下,新建一个文件(名字随意,最好和网站或者服务相关)

1
sudo nano /etc/nginx/sites-available/<name>

填写以下内容(<>中的具体内容需要修改)

1
2
3
4
5
6
7
8
9
10
11
server {
listen 80;
server_name <域名>;

location / {
proxy_pass http://localhost:<网站或者服务的端口>;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

保存后,使用以下命令进行链接:

1
sudo ln -s /etc/nginx/sites-available/<name> /etc/nginx/sites-enabled/

配置 Certbot

安装

1
2
sudo apt-get update
sudo apt-get install certbot python3-certbot-nginx

请求颁发免费证书

1
sudo certbot --nginx -d <你的域名>

成功后会显示:

1
2
3
Deploying certificate
Successfully deployed certificate for openai.api.shiquda.link to /etc/nginx/sites-enabled/xxx
Congratulations! You have successfully enabled HTTPS on xxx

请求成功后,如果一切正常,当证书快到期的时候,会自动更新。

为了保险起见,可以试一下模拟更新证书(不会真正更新)

1
sudo certbot renew --dry-run

使用

现在,应该访问对应的域名,就能实现使用HTTPS了。