我正在尝试在我的服务器上配置 SSL 但似乎有些地方出错了。
我已经在 1&1 上购买了 SSL 证书,他们给了我:
- 中级 SSL 证书
- 我的私钥
- 另一个 SSL 证书(我猜是普通证书?)
网上的指南提到将它们捆绑在一起 - 这是正确的吗?
我的 nginx 和 Dockerfile 如下。我-v
在运行 docker 时使用命令将我的 Linux 文件映射到容器,但我认为最好将文件复制到我的 Dockerfile 中?
这是我的 nginx 文件:
server {
listen 80;
listen 443 ssl;
server_name server_name.com;
ssl_certificate /etc/ssl/private/ssl-bundle.crt;
ssl_certificate_key /etc/ssl/private/ssl.key;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri /index.html;
}
}
Dockerfile:
# build environment
FROM node:9.6.1 as builder
RUN mkdir /usr/src/app
WORKDIR /usr/src/app
ENV PATH /usr/src/app/node_modules/.bin:$PATH
COPY package.json /usr/src/app/package.json
RUN npm install --silent
RUN npm install [email protected] -g --silent
COPY . /usr/src/app
RUN npm run build
# production environment
FROM nginx:1.13.9-alpine
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=builder /usr/src/app/client/build /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
答案1
将配置文件添加到 Dockerfile 并不符合 Docker 的最佳实践。
您的图像应具有通用性,可重复使用。稍后,您可能会乐意将其与其他证书文件一起按原样重复使用。
因此,绑定挂载配置比将配置文件放入docker镜像是更好的选择。
关于您的证书,只需将中间证书(应该是来自 1&1 的认证机构)和其他 SSL 证书(应该是您的服务器证书)连接到文件 ssl-bundle.crt 中。并将私钥放在 ssl.key 文件中。
我还建议您解释一下哪些地方不起作用,提供一些日志或错误消息,以及您用来生成和测试 Docker 容器的命令。