设置 https 访问 nginx docker 容器

viv*_*nov 5 https nginx docker

我希望能够通过https://192.168.99.100上的 https 访问 nginx docker 容器。到目前为止,我已经完成了以下工作:

Dockerfile

FROM nginx

COPY certs/nginx-selfsigned.crt /etc/ssl/certs/
COPY certs/nginx-selfsigned.key /etc/ssl/private/

COPY default-ssl.conf /etc/nginx/sites-available/default

EXPOSE 443
Run Code Online (Sandbox Code Playgroud)

我在文件夹中有相应的证书文件certs

default-ssl.conf

server {
    listen       80;
    listen       443 ssl;
    server_name  localhost;
    ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
    ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
Run Code Online (Sandbox Code Playgroud)

docker-compose.yaml

version: '3'

services:
  nginx:
    image: mynamespace/nginx_pma
    container_name: nginx_pma
    build:
      context: .
    ports: 
      - 443:443
      - 80:80
Run Code Online (Sandbox Code Playgroud)

因此,当我运行它时,我可以访问: 192.168.99.100 ,其中显示了 NGINX 欢迎页面,但我无法使其在https://192.168.99.100 上工作。

主机是带有 docker 工具箱的 Windows 7。

有什么建议吗?

Yar*_*dan 5

您的错误原因是因为您将 nginx SSL 配置复制到文件夹 nginx 时默认不会加载。在 Dockerfile 中更改这一行后 -
COPY default-ssl.conf /etc/nginx/sites-available/default
为此 -
COPY default-ssl.conf /etc/nginx/conf.d/default-ssl.conf
我可以使用 https 访问 Nginx。