寻求有关配置Nginx的帮助,以将端口10000上的传入请求转发到容器中运行的应用程序。
我有一个包含3个容器的docker映像。第一个容器是Nginx服务器,第二个烧瓶应用程序,第三个是Dataiku DSS服务器。
flask应用程序可以正常工作,我可以通过端口443连接,但是当尝试连接到Dataiku DSS服务器时,我收到502错误“ Bad Request”。
我可以通过运行docker run 10000:10000 dataiku/dss
来单独运行DSS Server容器,并且一切正常。我可以通过127.0.0.1:10000连接。在运行与项目完全独立的DSS服务器时,我还尝试了Nginx配置,但是仍然没有运气。
撰写文件如下:
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镜像https://doc.dataiku.com/dss/latest/installation/proxies.html#reverse-proxy
另外,使用docker的原因是将要托管所有主机的计算机无法访问互联网,并且仅对我所在的网络可见。
任何帮助都会很棒,因为如果不进行此操作,我就会有些困难。
更新:
我想要实现的目标结果是使用户能够连接到任一应用程序。
例如:
www.example.com:5000 = app1
www.example.com:5001 = app2
如果上述操作不可行,我将如何实现类似的目标
www.example.com/app1 = app1
www.example.com/app2 = app2
答案 0 :(得分:0)
您只需要在nginx中公开端口,因为您将其用作代理服务器。并且,在您的docker compose文件中,为nginx配置文件添加以下卷:
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro