Как настроить nginx с docker -композицией? - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть простое приложение из 3 контейнеров, которые все работают на одном сервере AWS EC2. Я хочу настроить Nginx для работы в качестве обратного прокси-сервера, однако я довольно новичок с Nginx и не знаю, как правильно установить файл conf.

Вот мой docker - compose:

version: "3"
services:

  nginx:
    container_name: nginx
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./conf/nginx.conf:/etc/nginx/nginx.conf

  frontend:
    container_name: frontend
    image: myfrontend:image
    ports:
      - "3000:3000"

  backend:
    container_name: backend
    depends_on:
      - db
    environment:
      DB_HOST: db
    image: mybackend:image
    ports:
      - "8400:8400"

  db:
    container_name: mongodb
    environment:
      MONGO_INITDB_DATABASE: myDB
    image: mongo:latest
    ports:
      - "27017:27017"
    volumes:
      - ./initialization/db:/docker-entrypoint-initdb.d
      - db-volume:/data/db

volumes:
  db-volume:

Бэкэнд извлекает данные из базы данных и отправляет их для представления во внешнем интерфейсе.

Вот мой nginx .conf файл:

events {
  worker_connections  4096;  
}

http {
 server {
   listen 80;
   listen [::]:80;

   server_name myDomainName.com;

   location / {
       proxy_pass http://frontend:3000/;
       proxy_set_header Host $host;
   }

   location / {
      proxy_pass http://backend:8400/;
      proxy_pass_request_headers on;
    }

 }
}

Как настроить nginx на обслуживание контейнеров внешнего и внутреннего интерфейсов?

1 Ответ

0 голосов
/ 28 февраля 2020

Вы можете использовать приведенные ниже Nginx конфиги для решения вашей проблемы

events {
  worker_connections  4096;  
}

http {

 server {
    listen       80 default_server;
    server_name  frontend.*;

    location / {
        resolver 127.0.0.11 ipv6=off;

        set $target http://frontend:3000;

        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_pass $target;
    }
  }

  server {
    listen       80;
    server_name  backend.*;

    location / {
        resolver 127.0.0.11 ipv6=off;

        set $target http://backend:8400;

        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_pass $target;
    }
  }
}

Nginx будет обслуживать бэкэнд и внешний интерфейс для разных доменных имен, при этом ниже, et c размещает вас сможет получить доступ к сервисам по указанным доменным именам

127.0.0.1 backend.me frontend.me
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...