赞
踩
首先,生成自签名的 SSL 证书和私钥。可以使用 OpenSSL 命令来生成
hostnamectl set-hostname httpshost
su
echo "192.168.23.5 www.httpshost.com" >> /etc/hosts
mkdir /opt/nginx
cd /opt/nginx
# 上传 nginx-1.22.0.tar.gz 安装包
rz -E
# 生成本地SSL证书及密钥文件
openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out certificate.pem
这个命令将会生成一个私钥文件 key.pem
和一个证书文件 certificate.pem
。
解释一下命令的参数:
req
:执行证书请求相关操作。-newkey rsa:2048
:生成一个新的 RSA 密钥对,密钥长度为 2048 bits。-nodes
:私钥不进行加密,这样在使用证书时不需要输入密码。-keyout key.pem
:指定生成的私钥文件名为 key.pem
。-x509
:生成自签名的证书。-days 365
:证书有效期为 365 天。-out certificate.pem
:指定生成的证书文件名为 certificate.pem
。vim /opt/nginx/Dockerfile # 基于基础镜像 FROM centos:7 # 维护者信息 MAINTAINER this is nginx image <mz> # 添加环境包 RUN yum -y update RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make openssl openssl-devel # 创建nginx管理用户 RUN useradd -M -s /sbin/nologin nginx # 上传 nginx 软件压缩包,并解压 ADD nginx-1.22.0.tar.gz /usr/local/src/ # 指定工作目录 WORKDIR /usr/local/src/nginx-1.22.0 RUN ./configure \ --prefix=/usr/local/nginx \ --user=nginx \ --group=nginx \ --with-http_stub_status_module \ --with-http_ssl_module # 编译及安装 RUN make && make install # 环境变量 ENV PATH /usr/local/nginx/sbin:$PATH # 指定 http 和 https 端口 #EXPOSE 80 EXPOSE 443 # 容器运行时执行命令 ENTRYPOINT [ "/usr/local/nginx/sbin/nginx", "-g", "daemon off;" ]
编辑 docker-compose.yml
文件:
vim /opt/nginx/docker-compose.yml # 指定docker-compose版本为3 version: '3' services: # 定义一个名为 nginx 的服务 nginx: # 设置容器名称为 nginx container_name: nginx # 设置主机名为 nginx hostname: nginx # 构建镜像 build: # 设置上下文路径为 ./nginx,及Dockerfile所在目录 context: ./ # 指定 Dockerfile 文件名为 Dockerfile dockerfile: Dockerfile # 端口映射 ports: # 将主机的 80 端口映射到容器的 80 端口 #- 80:80 # 将主机的 443 端口映射到容器的 443 端口 - 443:443 # 网络设置 networks: # 连接到名为 mynet 的网络 mynet: # 指定容器的ip地址为 172.18.0.10 ipv4_address: 172.18.0.10 # 卷挂载 volumes: # 将主机的 ./html 目录挂载到容器的 /usr/local/nginx/html 的目录 - ./nginx.conf:/usr/local/nginx/conf/nginx.conf - ./html:/usr/local/nginx/html - ./key.pem:/usr/local/nginx/ssl/key.pem - ./certificate.pem:/usr/local/nginx/ssl/certificate.pem # 网络定义 networks: # 定义名为 mynet 的网络 mynet: # 使用 bridge 网络驱动 driver: bridge # IP 地址管理 ipam: # 配置 IP 地址 config: # 设置子网为 172.18.0.0/16 - subnet: 172.18.0.0/16
在与 docker-compose.yml
文件相同的目录中创建一个名为 nginx.conf
的配置文件,并添加以下内容:
vim nginx.conf worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 443 ssl; ssl_certificate /usr/local/nginx/ssl/certificate.pem; ssl_certificate_key /usr/local/nginx/ssl/key.pem; server_name httpshost; charset utf-8; location / { root html; index index.html index.php; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
docker-compose -f docker-compose.yml up -d
echo "this is https test" > html/index.html
现在,您的本地 Docker 环境已经搭建好了 HTTPS。您可以通过访问 https://www.httpshost.com
来测试您的应用程序。请注意,由于使用的是自签名证书,您可能会收到浏览器的安全警告。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。