nginx配置https协议
获取密钥对和证书
使用openssl获取密钥对和证书,密钥对使用文件domain.key存放,证书使用domain.crt存放
新建文件夹ssl,并在ssl文件夹下分别创建certs、static两个文件夹:
mkdir -p ssl/certs mkdir -p ssl/static
将密钥对和证书文件移入certs目录下:
cp domain.crt ssl/certs cp domain.key ssl/certs
在static路径下新建一个index.html页面:
echo ' <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <h1>Hello World!</h1> </body> </html> ' > ssl/static/index.html
在ssl目录下新建custom.conf文件:
vim ssl/custom.conf
server { listen 80; listen 443 ssl; server_name 192.168.10.110; index index.html index.htm; location / { root /usr/share/nginx/html; } # ssl_certificate表示证书路径 ssl_certificate /certs/domain.crt; # ssl_certificate_key表示密钥对路径 ssl_certificate_key /certs/domain.key; }
在ssl目录下创建Dockerfile:
注意:在nginx容器的/etc/nginx/conf.d目录下默认存在一个default.conf配置文件,该配置文件中配置了一个监听80端口的虚拟机主机(server),所以在当前的测试实例中,如果不覆盖该文件,会导致配置冲突!
vim ssl/Dockerfile
FROM nginx:1.14.2 LABEL MAINTAINCE="bohanz838@gmail.com" ADD certs /certs ADD custom.conf /etc/nginx/conf.d/default.conf ADD static /usr/share/nginx/html
在ssl目录下创建compose.yaml:
vim ssl/compose.yaml
services: nginx: build: context: . tags: - "nginx:v1" ports: - 443:443 - 80:80
检查:
$ ls -lR ssl ssl: 总用量 12 drwxrwxr-x. 2 docker docker 42 11月 21 20:26 certs -rw-rw-r--. 1 docker docker 121 11月 21 20:35 compose.yaml -rw-rw-r--. 1 docker docker 342 11月 21 20:28 custom.conf -rw-rw-r--. 1 docker docker 157 11月 21 20:29 Dockerfile drwxrwxr-x. 2 docker docker 24 11月 21 20:27 static ssl/certs: 总用量 8 -rw-rw-r--. 1 docker docker 1403 11月 21 20:26 domain.crt -rw-rw-r--. 1 docker docker 1704 11月 21 20:26 domain.key ssl/static: 总用量 4 -rw-rw-r--. 1 docker docker 179 11月 21 20:27 index.html
使用docker compose启动服务:
cd ssl docker compose up -d
在浏览器中进行测试:
Last updated
Was this helpful?