Требуется помощь в настройке Nginx для пересылки входящих запросов через порт 10000 в приложение, работающее в контейнере.
У меня есть изображение docker, содержащее 3 контейнера. 1-й контейнер - это сервер Nginx, 2-е flask - приложение, а 3-й - сервер Dataiku DSS.
- flask приложение работает как следует, и я могу подключиться через порт 443, но при попытке подключения к на сервере Dataiku DSS я получаю ошибку 502. «Bad Request».
Я могу запустить контейнер сервера DSS самостоятельно, запустив docker run 10000:10000 dataiku/dss
, и все работает как положено. Я могу подключиться через 127.0.0.1:10000. Я также попробовал конфигурацию Nginx, когда сервер DSS работал полностью отдельно от проекта, но все же не повезло.
составной файл выглядит следующим образом:
version: "3.7"
services:
flask:
build: ./flask
container_name: flask
restart: always
image: trac
environment:
- APP_NAME=Trac
expose:
- 8080
depends_on:
- nginx
volumes:
- c:/trac_temp_files:/temp_files
dss:
build: ./dss
image: dss
container_name: dss
restart: always
expose:
- 10000
ports:
- "10000:10000"
depends_on:
- nginx
nginx:
build: ./nginx
image: nginx
container_name: nginx
restart: always
ports:
- "80:80"
- "443:443"
- "10000:10000"
nginx conf:
server {
# Host/port on which to expose Data Science Studio to users
listen 10000 ssl;
ssl_certificate wildcard.crt;
ssl_certificate_key wildcard.key;
location / {
# Base url of the Data Science Studio installation
proxy_pass http://0.0.0.0:10000/;
proxy_redirect off;
# Allow long queries
proxy_read_timeout 3600;
proxy_send_timeout 600;
# Allow large uploads
client_max_body_size 0;
# Allow protocol upgrade to websocket
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
server {
listen 80 default_server;
listen [::]:80 default_server;
listen 443 ssl http2 default_server;
ssl_certificate wildcard.crt;
ssl_certificate_key wildcard.key;
client_max_body_size 100M;
location / {
include uwsgi_params;
uwsgi_pass flask:8080;
}
}
Я довольно новичок в docker, поэтому мне интересно, есть ли что-то, что я упустил, понял.
Я пытаюсь следовать тому, что рекомендует Dataiku о подключение через SSL, но я предполагаю, что руководство не предполагает, что вы используете их docker image https://doc.dataiku.com/dss/latest/installation/proxies.html#reverse -proxy
Кроме того, причиной использования docker является машина где все это будет размещено, у него нет доступа к inte rnet и он виден только той сети, в которой я нахожусь.
Любая помощь будет потрясающей, поскольку я немного застрял без этой работы.
ОБНОВЛЕНИЕ:
Желаемый результат того, чего я пытаюсь достичь, - это возможность подключения пользователя к любому приложению.
Например:
www.example.com:5000 = app1
www.example.com:5001 = app2
Если вышеупомянутое невозможно, как бы я чего-то достиг как
www.example.com/app1 = app1
www.example.com/app2 = app2