vivanov
vivanov

Reputation: 1522

Set up https access to nginx docker container

I want to be able to access an nginx docker container via the https at https://192.168.99.100. By now I have done the following:

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

I have the correspondent certificate files in folder certs.

The 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;
    }
}

docker-compose.yaml

version: '3'

services:
  nginx:
    image: mynamespace/nginx_pma
    container_name: nginx_pma
    build:
      context: .
    ports: 
      - 443:443
      - 80:80

So, when I run this, I am able to access: 192.168.99.100 which shows NGINX welcome page, but I am unable to make it work on https://192.168.99.100.

The host is Windows 7 with docker toolbox.

Any sugestions?

Upvotes: 9

Views: 12730

Answers (1)

Yaron Idan
Yaron Idan

Reputation: 6765

The reason for your error is because your copying the nginx SSL configuration to a folder nginx does not load by default. After changing this line in the Dockerfile -
COPY default-ssl.conf /etc/nginx/sites-available/default
To this -
COPY default-ssl.conf /etc/nginx/conf.d/default-ssl.conf
I'm able to reach Nginx with https.

Upvotes: 8

Related Questions