У меня есть бэкэнд и внешний интерфейс, которые работают в двух контейнерах в Docker, и оба доступны из моего браузера через их порты:
localhost:8081 # frontend
localhost:8082 # backend
Теперь я хочу использовать сервер Nginx, который получаетвесь трафик (порт 80) и перенаправления:
localhost -> to frontend
localhost/api -> to the backend
Попробовав почти все в файле nginx.conf
(ничего не работает), я обнаружил в SO вопросе, что файл, который я должен изменить:
/ etc / nginx / sites-enabled / default
Поэтому я пытаюсь изменить его, и теперь nginx запускается.Под прогонами я имею в виду, что по крайней мере, когда я получаю доступ к localhost
, отображается страница приветствия nginx.Тем не менее, я все еще не могу сделать трафик моего маршрута nginx (через прокси, не перенаправлять).
Прямо сейчас мой файл docker-compose
выглядит следующим образом (фрагмент для nginx плюс эти две службы):
nginx:
image: nginx:latest
ports:
- 80:80
volumes:
- ./Dockerfiles/nginx/default:/etc/nginx/sites-enabled/default
links:
- frontend
- backend
depends_on:
- frontend
- backend
frontend:
build: ./Dockerfiles/frontend
volumes:
- ./Dockerfiles/frontend/www/src:/usr/src/app
- ./logs/frontend/httpd:/var/logs/httpd
ports:
- "8081:3000"
links:
- backend
backend:
build: ./Dockerfiles/backend
volumes:
- ./Dockerfiles/backend/www:/var/www/html
- ./logs/backend/httpd:/var/logs/httpd
ports:
- "8082:80"
links:
- "database"
- "redis"
depends_on:
- database
- redis
Мой default
файл, как было сказано выше, для конфигурации nginx:
server {
listen 80 default_server;
# Add index.php to the list if you are using PHP
index index.html index.htm index.php index.nginx-debian.html;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
#try_files $uri $uri/ =404;
proxy_pass http://frontend:8081/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /api {
proxy_pass http://backend:8082/public/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
И когда я пытаюсь получить доступ к своему /api
URL-адресу, например, ошибка, которую nginx сообщает моемуэто:
nginx_1 |2018/12/17 21:44:09 [ошибка] 6 # 6: * 1 open () "/ usr / share / nginx / html / api" не удалось (2: нет такого файла или каталога), клиент: 172.20.0.1, сервер: localhost, запрос: "GET / api HTTP / 1.1", хост: "localhost"
Кажется, что он пытается извлечь файл из локальной файловой системы (что-то, чего я не могу понять, учитывая файлы конф.).
Любое руководство, идея или совет?