網站的單一 Nginx Docker 與多個 Nginx Docker

網站的單一 Nginx Docker 與多個 Nginx Docker

如果我問了一個愚蠢的問題,請原諒我,但我正在建立一個伺服器,我將在其中使用 Nginx Docker 託管多個 Flask 網站 Docker 容器。我現在的問題是:是擁有一個主 nginx docker 容器,然後在其上託管我的所有網站 Docker 容器,還是為每個具有 docker compose 的應用程式擁有一個 Nginx docker 容器更好?

我想知道就資源處理和效率而言,哪一個比較好?

@Jacob 按照你的回答,我正在嘗試設定這樣的東西

docker-compose.yml:

version: "3.8"

services:
  portfolix:
    container_name: portfolix
    image: mervin16/portfolix:dev
    env_file:
      - config_local.env
    expose:
      - 8086
    restart: always
    networks:
      - sky_net

  mes:
    container_name: mes
    image: mervin16/mes:dev
    networks:
      - sky_net
    expose:
      - 8085
    restart: always

  nginx:
    build: ./nginx
    container_name: nginx
    ports:
      - "8085:85"
      - "8086:86"
    restart: always
    networks:
      - sky_net

networks:
  sky_net:
    name: sky_network
    driver: bridge

現在每個網站都可以在 localhost:8085 和 localhost:8086 上使用

然後,我在 Nginx 上使用反向代理(不是 docker,而是安裝在我的伺服器上)將流量重定向到我的網域:

server {

server_name   mes.th3pl4gu3.com;

  location / {
    access_log  /var/log/nginx/mes/access_mes.log;
    error_log  /var/log/nginx/mes/error_mes.log;
    proxy_pass  http://localhost:8081;
  }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/mes.th3pl4gu3.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/mes.th3pl4gu3.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {
    if ($host = mes.th3pl4gu3.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


 listen        80;
  server_name   mes.th3pl4gu3.com;
    return 404; # managed by Certbot


}

答案1

這不是一個愚蠢的問題,但是讓我們澄清一下,無論你如何配置nginx 和docker,一個主機IP 只能將一個服務綁定到一個端口,所以如果你想在端口80/443 上的一個IP 地址上處理多個網站(http/ https)你只能執行一個 nginx 容器來處理不同主機名稱(虛擬主機)之間的路由並將流量重新導向到適當的後端。

您還需要在不同連接埠上公開這些後端或共用相同的 docker 網路。

您可能需要考慮的是庫存 nginx 容器的替代方案,其中更適合更動態的後端,例如特拉菲克或者nginx 代理

相關內容