gpt4 book ai didi

Angular:ng-serve 忽略证书

转载 作者:太空宇宙 更新时间:2023-11-03 13:05:16 24 4
gpt4 key购买 nike

我想使用 ng-serve --host 0.0.0.0 通过 HTTPS 服务 Angular 应用程序.我的项目使用 Angular CLI 1.2。

Angular 无法识别我提供的证书,而是创建自己的证书。我要使用的证书是 .pem文件。

启用 --ssl flag 使用 HTTPS 正确服务。如果我禁用它,它会返回到 HTTP,所以这个标志有效。

我在 Docker 容器中工作。我在撰写文件中将证书作为卷传入,当我检查 docker exec -i <id> bash 时,它们位于容器中预期的位置。 .

如果我忽略客户端和服务器端的无效证书错误,一切都会按预期进行。我要解决的问题是 ng-serve使用我的证书。

这是我所做的:

  1. ng-serve --ssl true --ssl-cert <path-to-cert> --ssl-key <path-to-key>和变化,例如绝对/相对路径。

  2. package.json 中设置以上标志文件。

  3. 正在设置我的 .angular-cli.json默认值:

    {
    ...
    "defaults": {
    ...
    "serve": {
    "sslKey": "<relative-path>",
    "sslCert": "<relative-path>"
    },
    ...
    },
    ...
    }

我试过答案:

Get angular-cli to ng serve over HTTPS

Run Angular Cli Ng Serve over https 2018

这篇文章中的步骤也没有奏效: https://medium.com/@rubenvermeulen/running-angular-cli-over-https-with-a-trusted-certificate-4a0d5f92747a

最佳答案

您不应该在生产 Docker 容器中使用 ng serve,因为它会调用开发 HTTP 服务器,根本不安全,只是为了在本地测试应用程序。这就是命令 ng serve --prod 触发以下警告的原因:

**************************************************************************************** 
This is a simple server for use in testing or debugging Angular applications locally. It hasn't been reviewed for security issues.

DON'T USE IT FOR PRODUCTION!
****************************************************************************************

我将为您提供一个 Dockerfile 示例,该示例使用 Nginx HTTP 服务器(两个使用最广泛的服务器之一)包装 Angular 应用程序:

FROM node:10.13.0-stretch as build-stage
WORKDIR /app
COPY package*.json /app/
RUN npm install
RUN npm install -g --unsafe-perm @angular/cli@latest
COPY ./ /app/
ARG configuration=production
RUN ng build --prod --build-optimizer=true --aot=true --output-hashing=all --extract-css=true --named-chunks=false --vendor-chunk=true

FROM nginx:1.14.1

# Add application files
COPY --from=build-stage /app/dist/name-of-your-app/ /var/www/html
COPY --from=build-stage /app/nginx/nginx.conf /etc/nginx/nginx.conf
COPY --from=build-stage /app/nginx/site.conf /etc/nginx/conf.d/default.conf

RUN touch /var/run/nginx.pid && \
chown -R www-data: /etc/nginx/ && \
chown -R www-data: /var/run/nginx.pid && \
chown -R www-data: /var/cache/nginx && \
chown -R www-data: /var/www/html

USER www-data

#Expose the port
EXPOSE 8080

STOPSIGNAL SIGTERM

CMD ["nginx", "-g", "daemon off;"]

这会创建两个容器,第一个安装 CLI 并构建应用程序,第二个将文件从“构建容器”复制到由 Nginx HTTP 服务器提供服务的文件夹,然后第一个容器被销毁。

这假设您在保存证书配置的 nginx 文件夹中有适当的 nginx.confsite.conf(顺便说一下您还必须在 Dockerfile 中添加证书和私钥文件)。您还可以将 Apache 用作 HTTP 服务器。

关于Angular:ng-serve 忽略证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53319337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com