Я хочу разместить веб-сайт и запустить проект микросервисов на своем собственном сервере.
Веб-сайт будет работать с веб-сервером Nginx. Домен веб-сайта будет выглядеть как sampleapp.com, и этот веб-сайт будет использовать freessl.
Одна из служб проекта 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;
}
}
Я разработчик, а не системный администратор, поэтому мне трудно найти лучший способ сделать это.