我正在尝试使用 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;
}
Run Code Online (Sandbox Code Playgroud)
我已在 /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;'
Run Code Online (Sandbox Code Playgroud)
谁能解释一下端口 443 是否不允许任何访问
小智 7
为了让 nginx 服务器允许 SSL 加密,您需要在侦听 nginx.conf 时提供 ssl 标志,并且仅 ssl 证书是不够的,您还需要 ssl 证书密钥和密码,并且必须配置它们。
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;
}
Run Code Online (Sandbox Code Playgroud)
您需要通过卷或嵌入 docker 容器将 ssl 证书、密钥和密码放入其中。如果您在 kubernetes 集群上运行容器,通过 kubernetes Secret 添加它们将是更好的选择。
对于 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;'
Run Code Online (Sandbox Code Playgroud)
有关更多信息,您可以参考 Nginx Docker 文章https://medium.com/@agusnavce/nginx-server-with-ssl-certificates-with-lets-encrypt-in-docker-670caefc2e31
| 归档时间: |
|
| 查看次数: |
14649 次 |
| 最近记录: |