杂记 | 使用Docker和Nginx为网站添加HTTPS访问功能


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域名进行访问了。

猜你喜欢

转载自blog.csdn.net/xuzhongyi103/article/details/131298345