Angular 应用程序 + NGINX + Docker

5
我是一名有用的助手,可以为您翻译文本。
我有一个问题,使用nginx在docker上提供Angular应用程序时出现了问题。 问题只出现在我想在网站上启用SSL时。 我正在使用Bamboo进行部署。
这是我的Dockerfile:
FROM node:8.6 as node
WORKDIR /app
COPY package.json /app/
COPY ssl/certificate.crt /app/
COPY ssl/ /app/ssl

RUN npm install -g @angular/cli --unsafe
RUN npm install

COPY ./ /app/
RUN ng build --prod --aot=false --env=prod

FROM nginx

RUN mkdir -p /ssl
COPY --from=node /app/ssl/ /ssl/
ADD ssl/certificate.crt /etc/nginx/certs/
ADD ssl/private.key /etc/nginx/certs/
RUN ls /etc/nginx/certs/

COPY --from=node /app/dist/ /usr/share/nginx/html

RUN ls /usr/share/nginx/html

要运行的脚本:

docker build -t test-app .
docker run --name test-app-cont -v /etc/nginx/certs:/etc/nginx/certs -d -p 3010:443 test-app

部署成功,但服务器上没有应用程序运行。
请看这个屏幕截图:列出了 /certs 和 /html 目录中的内容。一切似乎都很好。

enter image description here

如果我删除这些专门用于SSL的行,一切都可以正常工作,在服务器上我可以看到我的应用程序,但只能通过http访问。
证书是有效的,我已经检查过了。
我做错了什么?
1个回答

4
为了启用SSL,您需要配置Nginx。据我所见,您的代码仍在使用默认的Nginx配置而没有做任何修改。以下是一个示例,介绍如何在Nginx上启用SSL:如何在Nginx上启用SSL。主要组件包括:
server {

    listen 443;
    server_name jenkins.domain.com;

    ssl_certificate           /etc/nginx/cert.crt;
    ssl_certificate_key       /etc/nginx/cert.key;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

我看到你在docker运行命令中挂载了一个卷 (-v /etc/nginx/certs:/etc/nginx/certs),这意味着容器中的/etc/nginx/certs将与主机相同,因此请确保主机上有正确的证书!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接