01 前言
1.1 HTTPS介绍
HTTPS(Hypertext Transfer Protocol Secure)是一种通过加密通信保护网站数据传输的协议。它是 HTTP 协议的安全版本,通过使用 SSL(Secure Sockets Layer)或 TLS(Transport Layer Security)协议对数据进行加密和认证。在 HTTPS 下,传输的数据在客户端和服务器之间是加密的,确保信息不被窃听、篡改或伪装。
1.2 准备工作
需要一台Linux服务器、一个域名,安装docker。
并且从阿里云等服务商处获取了SSL 证书。
在阿里云的域名管理界面,点击“开启SSL证书”。
选择“免费证书”即可。
然后点击“创建证书” -> “证书申请”
填写相应信息,然后提交审核。
通过后点击“下载”,选择Nginx。
下载好后解压,包含一个.key
文件和一个.pem
文件。将它们上传到服务器。
02 编写nginx.conf
...
http {
...
server {
# http2可以提升响应速度 是可选的
listen 443 ssl http2; # 这里要加上ssl 443是https的默认端口 80是http的默认端口
server_name www.xxx.top; # 证书对应的域名
location / {
...
}
ssl_certificate /etc/ssl/certificates/www/www.xxx.top.pem; # 证书存放路径(docker容器内的路径)
ssl_certificate_key /etc/ssl/certificates/www/www.xxx.top.key; # 私钥存放路径(docker容器内的路径)
# 以下配置可以提升响应速度 是可选的
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/ssl/certificates/www/www.xxx.top.pem;
ssl_buffer_size 4k;
}
}
概括地说,在监听时新增了ssl,同时增加了ssl_certificate和ssl_certificate_key配置,即可开启HTTPS了。
03 使用docker启动nginx
在服务器的/root
目录下新建ssl
目录,然后将证书和私钥文件放在该目录下。
编写docker-compose.yml文件(需要安装docker-compose)
version: '3.3'
services:
nginx:
volumes:
- '/root/nginx.conf:/etc/nginx/nginx.conf' # 配置文件映射
- '/root/ssl:/etc/ssl/certificates' # 证书目录映射
- '/root/html:/usr/share/nginx/html' # 页面目录映射(可选)
network_mode: host # 使用宿主机的网络
image: 'nginx:stable-alpine-slim'
启动docker容器
# 需要先cd到docker-compose.yml所在的目录 再执行命令
docker-compose up -d
然后就可以输入带https
域名进行访问了。