Mac*_*cik 5 nginx web docker angular
我在 docker 上使用 nginx 服务 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
Run Code Online (Sandbox Code Playgroud)
要运行的脚本:
docker build -t test-app .
docker run --name test-app-cont -v /etc/nginx/certs:/etc/nginx/certs -d -p 3010:443 test-app
Run Code Online (Sandbox Code Playgroud)
部署运行成功,但服务的服务器上没有应用程序。
请查看此屏幕:列出了 /certs 和 /html 目录中的内容。一切似乎都很好。
如果我删除这些专用于 SSL 的行,一切正常,并且在服务器上我可以看到我的应用程序,但只能通过 http。
证书有效,我查过了。
我究竟做错了什么?
要启用 SSL,您需要为其配置 Nginx。据我在你的代码中看到的,你仍然使用默认的 Nginx 配置,没有任何修改。以下是如何在 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;
Run Code Online (Sandbox Code Playgroud)
我还看到您在 docker run 命令中挂载了一个卷(-v /etc/nginx/certs:/etc/nginx/certs),这意味着容器中的 /etc/nginx/certs 将与主机相同因此请确保主机上拥有正确的证书!
| 归档时间: |
|
| 查看次数: |
3567 次 |
| 最近记录: |