Порт Docker не работает через https после настройки SSL через ubuntu nginx - PullRequest
0 голосов
/ 01 апреля 2019

Я настроил сертификат Letsencrypt непосредственно для экземпляра AWS EC2 Ubuntu, на котором запущен Nginx, и сервера докеров, использующего порт 9998. Домен настроен на маршруте 53. Http перенаправляется на https.

Итак, https://example.com работает нормально, но https://example.com:9998 получает ERR_SSL_PROTOCOL_ERROR. Если я использую IP-адрес, например, * 1007, *http://10.10.10.10:9997 работает и проверил сервер, используя порт 9998, хорошо.

Снимок сервера в Docker:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
999111000        img-server         "/bin/sh -c 'java -j…"   21 hours ago        Up 21 hours         0.0.0.0:9998->9998/tcp   hellowworld

Кажется, что-то не хватает между Nginx и сервером, использующим порт 9998. Как я могу это исправить?

1 Ответ

0 голосов
/ 01 апреля 2019

Где вы настроили сертификат ssl? Только Nginx?

Причина, по которой вы не можете посетить https://example.com:9998 с использованием протокола ssl, заключается в том, что этот порт предоставляет службу http, а не https.

Я предлагаю не публиковать 9998 hellowworld и прокси-сервера весь трафик с nginx (если Nginx также запускается с докером и в той же сети).

Сконфигурируйте https в Nginx, а сервер-источник предоставит http.

Это образец конфигурация https://github.com/newnius/scripts/blob/master/nginx/config/conf.d/https.conf

server {
    listen      80;
    server_name example.com;
    return      301 https://example.com$request_uri;
}
server {
    listen      443;
    server_name example.com;

    access_log  logs/example.com/access.log  main;
    error_log   /var/log/nginx/debug.log debug;

    ssl on;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    location / {
        proxy_pass       http://apache:80;
        proxy_set_header Host $host;
        proxy_set_header CLIENT-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location ~ /.well-known {
        allow all;
        proxy_pass  http://apache:80;
    }

    # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store(Mac).
    location ~ /\. {
        deny all;
    }
}
...