微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何为 2 个不同的项目2 个不同的 docker compose 文件配置 nginx

如何解决如何为 2 个不同的项目2 个不同的 docker compose 文件配置 nginx

我有 2 个项目:

  1. myapi 为所有 API 调用提供服务
  2. django_web 使用 myapi。

如果我将它们放在 2 个不同的服务器上 - 它们运行良好(因为它们是完全独立的)但是,我希望将它们都放在同一台服务器上(命名为:www.example.com),但我想不通我们如何才能共享同一个 Nginx。我正在使用 docker,但它抱怨 0.0.0.0:443 已在使用中。

myapi Nginx 配置:

upstream flask_server {    
   server flaskapp2:8000;
}


server {
  listen 80;
  server_name example.com;

 location / {
     return 301 https://$server_name$request_uri;
  }
}

server {
listen 443 ssl;
 
server_name example.com;

location / {
    proxy_pass http://flaskapp2:8000;
    proxy_redirect     off;
    proxy_set_header   Host $host;
    proxy_set_header   X-Real-IP $remote_addr;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   X-Forwarded-Host $server_name;       
    proxy_no_cache 1;
    proxy_cache_bypass 1; 
}

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-Nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

对于 django_web

server {
    listen 80;
    server_name example.com;
    return 301 https://$server_name$request_uri;        
}


server {
 client_max_body_size 20M;
 listen 443 ssl;
  server_name example.com;

  ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    location /static/ {
      alias /www/static/;
    }

    location /websocket/ {
   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "upgrade";
   #proxy_pass http://$server_name:8080/websocket/my_random_number/;
   proxy_pass http://$server_name:8080;

 }



location / {
     proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Forwarded-Port $server_port;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_pass http://$server_name:8080;

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

} }

myapi 的 docker 设置:

  Nginx:
image: "Nginx:1.13.5"
ports:
  - "80:80"
  - "443:443"
volumes:
  - ./config/Nginx/conf.d:/etc/Nginx/conf.d
  - ./static:/static
  - /etc/letsencrypt:/etc/letsencrypt/ 
restart: always
networks:
  - my_network
depends_on: 
  - flaskapp2
container_name: hNginx

对于 django_web:

  Nginx:
    restart: always
    image: "Nginx"
    container_name: hNginx
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./config/example:/etc/Nginx/conf.d
      - ./static2:/static
      - ./media2:/media
      - .:/www
      - /etc/letsencrypt:/etc/letsencrypt/ 
      - ./config/html_pages:/usr/share/Nginx/html
    networks:
      - hnetwork

解决方法

如果您想通过容器处理同一主机上的共享端口,我建议您使用名为 Traefik 的中间件服务。

将 Nginx 提供的两项服务放在 Traefik 后面。 Traefik 会按照域名或路径前缀规则,将通过 443 传入的 Web 请求路由到良好的服务。

这是一个简短的 docker-compose 实现建议:

x = int(input())
list = []
for i in range(x) :
    m = int(input())
    list.append(m)
for i in list :
    if i > 2 :
        list.remove(i)
print(list)
print(len(list))
z = len(list) / 3
print (int(z))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。