Рейтинг:0

Как запустить два веб-сервера Nginx на одном компьютере?

флаг br

Я хочу разместить веб-сайт и запустить проект микросервисов на своем собственном сервере.

  1. Веб-сайт будет работать с веб-сервером Nginx. Домен веб-сайта будет выглядеть как sampleapp.com, и этот веб-сайт будет использовать freessl.

  2. Одна из служб проекта Microservice будет работать с веб-сервером Nginx в качестве службы в контейнере Docker. Этот сервис использует поддомены моего sampleapp.com, такие как api-dev.sampleapp.com, и эти поддомены также должны работать с SSL.

При попытке развернуть службы с помощью docker-compose я получаю следующую ошибку:

[предупреждение] 1 # 1: конфликтующее имя сервера «api-dev.sample.com» на 0.0.0.0:80, игнорируется

Основная проблема заключается в том, как настроить ssl внутри докера. 443 — порт по умолчанию для HTTPS.

Конфигурационный файл Nginx моего микросервиса выглядит следующим образом.

рабочие_процессы авто;

События {
  worker_connections 1024;
}

http {

  сервер {
    слушать 80 default_server;
    имя сервера "";
    вернуть 444;
  }

  сервер {
    имя_сервера game-dev.sampleapp.com;

    место расположения / {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Хост $http_host;
      proxy_set_header X-NginX-Proxy true;
      прокси_http_версия 1.1;
      proxy_set_header Обновить $http_upgrade;
      proxy_set_header Соединение "обновление";

      прокси_пасс http://game_nodes;
      прокси_перенаправление выключено;
    }
  }
  сервер {
    если ($host = game-dev.sampleapp.com) {
      вернуть 301 https://$host$request_uri;
    }


    слушать 80;
    слушать [::]:80;
    имя_сервера game-dev.sampleapp.com;
    вернуть 404;
  }

  вверх по течению game_nodes {
# включить липкую сессию
 # ip_hash;
    серверная игра-альфа:3000;
    поддержка активности 8;
  }

  сервер {
    имя_сервера api-dev.sampleapp.com;

    место расположения / {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Хост $http_host;
      proxy_set_header X-NginX-Proxy true;

      proxy_pass http://main_nodes;
      прокси_перенаправление выключено;

    }
  }

  сервер {
   # если ($host = api-dev.sampleapp.com) {
    # вернуть 301 https://$host$request_uri;
    #}

    слушать 80;
    слушать [::]:80;
    имя_сервера api-dev.sampleapp.com;
    вернуть 404;
  }

  восходящий main_nodes {
    основной альфа-сервер: 8000;
    основная бета-версия сервера: 8000;
    поддержка активности 8;
  }
}

Конфигурационный файл Nginx веб-сайта выглядит следующим образом:

сервер {
    слушать 8080;
    слушать [::]:8080;
    слушать 8443 ssl http2;
    слушать [::]:8443 ssl http2;

    имя_сервера sampleapp.com www.sampleapp.com;
    корень /var/www/sampleapp.com;
    индекс index.html;

    ssl_certificate /etc/ssl/certs/sampleapp.com.pem;
    ssl_certificate_key /etc/ssl/private/sampleapp.com.key;
    ssl_client_certificate /etc/ssl/certs/origin-pull-ca.pem;
    ssl_verify_client включен;

    client_max_body_size 100M;
  
    автоиндекс выключен;

    место расположения / {
        try_files $uri $uri/ =404;

    }

}

Я разработчик, а не системный администратор, поэтому мне трудно найти лучший способ сделать это.

djdomi avatar
флаг za
В обычных случаях nginx имеет каталоги, доступные для сайта, и каталоги, поддерживающие сайт, для добавления виртуальных хостов в службу.
Рейтинг:1
флаг es

Одним из возможных решений здесь является запуск 3 контейнеров докеров с Nginx.

  1. прослушивает 80 и 443 порты, разгружает ssl и работает как обратный прокси для двух других контейнеров.
  2. раскручивает веб-сайт
  3. раскручивает микросервис

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.