Конфигурация обратного прокси-сервера Nginx для обслуживания веб-приложений и веб-API через https - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь добавить поддержку HTTPS и упростить доступ к стеку докеров для будущего развертывания.

Вот что у меня сейчас есть:

  • контейнер с узлом / угловой сетьюприложение, обслуживающее http://localhost:4200
  • контейнер с веб-API, обслуживающее http://localhost:5001/api/controller/action
  • Swagger UI из API, обслуживаемое на http://localhost:5001/api/api-explorer
  • несколько других контейнеров, которыедоступ к API осуществляется изнутри через разные порты (дБ, очередь сообщений и т. д.)

все это управляется в docker-compose .

сейчас, что мне нужно получить, это:

Из того, что я прочитал и понял, мне нужен еще один контейнер с nginx, действующим в качестве обратного прокси-сервера для достижения этой цели и обработки части HTTPS, поэтому я пошелс этим.Я довольно новичок в Docker и совершенно новичок в nginx, поэтому я не уверен, как правильно и правильно построить эту конфигурацию.

Вот что я сделал до сих пор:

worker_processes 1;

events {
    worker_connections 1024;
}

http {
    server {
        server_name localhost;

        proxy_set_header X-Real-IP         $remote_addr;
        proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host              $host;
        proxy_set_header X-Forwarded-Host  $host;
        proxy_set_header X-Forwarded-Port  $server_port;
        proxy_pass_request_headers on;

        location / {
            proxy_pass http://front_end:4200;
        }

        location /api {
            proxy_pass http://web_api:5001;
        }

        listen 443 ssl;
        ssl_protocols             TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers               ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DHE+AES128:!ADH:!AECDH:!MD5;
        ssl_certificate           /etc/ssl/private/localhost.crt;
        ssl_certificate_key       /etc/ssl/private/localhost.key;
    }
}

И в результате я действительно могу получить доступ к своему веб-приложению и Swagger UI таким образом, используя API через Swagger UI, однако каждый вызов API из веб-приложения истекает.

Я быложидая увидеть, что вызовы API проходят через порт «перенаправления» 5001, но он не работает, и я не могу понять, почему он вообще не проходит.

Использование curl локально дает такой результат:

curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to localhost:5001

Любая помощь с этим будет принята с благодарностью!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...