简体   繁体   English

使用两个 docker-compose 容器(Flask 和 Django)配置 Nginx

[英]Configure Nginx with two docker-compose containers (Flask and Django)

I am trying to expose two different address used like APIs.我正在尝试公开两个不同的地址,例如 API。 One in Django and the other one in Flask, they are Docker-compose containers.一个在 Django 中,另一个在 Flask 中,它们是 Docker-compose 容器。

I need configure Nginx for expose the two containers in two different subdomains.我需要配置 Nginx 以在两个不同的子域中公开两个容器。

It is my Nginx.conf:这是我的 Nginx.conf:

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
 worker_connections  1024;  ## Default: 1024, increase if you have lots of clients
 }    

http {
  include       /etc/nginx/mime.types;
  # fallback in case we can't determine a type
  default_type  application/octet-stream;

 log_format  main  '$remote_addr - $remote_user [$time_local] 
"$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log  /var/log/nginx/access.log  main;

sendfile        on;
#tcp_nopush     on;

keepalive_timeout  65;

upstream app {
 server django:5000;
}

upstream app_server {
 server flask:5090;
}

server {
 listen 5090;
 location / {
    proxy_pass http://app_server;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Scheme $scheme;
  }
}

server {
 listen 5000;
 location / {
    proxy_pass http://app;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Scheme $scheme;
 }
 }

}

And my production.yml还有我的production.yml

Nginx:
  build: ./compose/production/nginx
  image: *image
  ports:
    - 80:80
  depends_on:
    - flask
    - django

My containers are all up.我的容器都装好了。

在此处输入图像描述

I use proxy_pass :我使用proxy_pass

server {
    listen <port>;
    location / {
        proxy_pass http://<container-host-name>:<port>;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Scheme $scheme;
    }
}

You nginx container connected only with 80 port on machine and 80 port on container, but you nginx server listen 5000 and 5090 ports:)您的 nginx 容器仅与机器上的 80 端口和容器上的 80 端口连接,但您的 nginx 服务器监听50005090端口:)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM