gpt4 book ai didi

docker - 使用 SSL 自签名证书运行 Nginx Docker

转载 作者:行者123 更新时间:2023-12-04 22:35:12 27 4
gpt4 key购买 nike

我正在尝试使用 nginx 图像通过 Docker 运行一个 UI 应用程序我能够毫无问题地访问端口 80 上的服务但是每当我尝试通过 443 端口上的 https 访问它时我无法访问应用程序网站不断加载并最终导致无法访问我已经更新了 default.conf 中的 nginx.conf 文件以允许通过端口 443 访问

以下是我的nginx.conf

charset utf-8;

server {
listen 80;
server_name localhost;
root /usr/nginx/html;
}

server {
listen 443;
server_name localhost;
root /usr/nginx/html;
}

我在/usr/nginx文件夹下添加了SSL自签名证书,并通过Dockerfile暴露了443端口

以下是我的Dockerfile

FROM nginx

COPY dist /usr/nginx/html
RUN chmod -R 777 /usr/nginx/html/*

COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY domain.crt /usr/nginx

EXPOSE 80:443
ENTRYPOINT nginx -g 'daemon off;'

任何人都可以解释一下是端口 443 不允许任何访问

最佳答案

为了使 nginx 服务器允许 SSL 加密,您需要在监听 nginx.conf 时提供 ssl 标志并且只有 ssl 证书是不够的,您还需要 ssl 证书 key 和密码,并且必须对其进行配置。

charset utf-8;

server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
}

server {
listen 443 ssl;
ssl_certificate /usr/nginx/ssl.crt;
ssl_certificate_key /usr/nginx/ssl.key;
ssl_password_file /usr/nginx/ssl.pass;
server_name localhost;
root /usr/nginx/html;
}

并且您需要将 ssl 证书、 key 和密码通过卷或通过嵌入到 docker 容器中。如果您在 kubernetes 集群上运行容器,通过 kubernetes secrets 添加它们将是更好的选择。

对于 Dockerfile 你可以这样添加

FROM nginx

COPY dist /usr/nginx/html
RUN chmod -R 777 /usr/nginx/html/*

COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY ssl.crt /usr/nginx/
COPY ssl.pass /usr/nginx/
COPY ssl.key /usr/nginx/

EXPOSE 80:443
ENTRYPOINT nginx -g 'daemon off;'

有关更多信息,您可以引用 Nginx Docker 文章 https://medium.com/@agusnavce/nginx-server-with-ssl-certificates-with-lets-encrypt-in-docker-670caefc2e31

关于docker - 使用 SSL 自签名证书运行 Nginx Docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69753332/

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