Я пытаюсь обратного прокси-сервера управлять подключением ejabberd с nginx в докере.Как перенаправить вверх по потоку от nginx на сервер upstream
Ниже мой докер-Compose файл
version: '2'
services:
nginx:
image: nginx
ports:
- "80:80"
- "443:443"
depends_on:
- ejabberd
links:
- ejabberd
ejabberd:
image: ejabberd:16.04
depends_on:
- mysql
ports:
- "5280:5280"
links:
- mysql
mysql:
image: mysql:5.6
ports:
- "3306:3306"
Изображения Nginx, ejabberd: 16,04 и MySQL: 5,6 доступны в моем местном грузчиком.
Ниже мой конфигурационный файл сервера, который включен в файл nginx.conf
upstream ejabberd-server {
server ejabberd:5280;
}
server {
# regular silverstripe things here
# location should match your JabberPage::BOSHUrl
# with a leading slash
listen 80;
#server_name oops.hereim.co
location /http-bind {
# Local ejabberd with http-bind
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://ejabberd-server;
}
}
Но когда я пытаюсь получить доступ к URL-адрес http://192.168.99.102/http-bind
Я получаю ошибку 404 не найден ,
Я что-то упустил в конфигурации выше?
192.168.99.102 - это IP-адрес моей докерной машины.
docker-compose exec nginx ping ejabberd
Вышеупомянутая команда возвращает ответ.
Восходящий поток должен быть настроен для размещения ejabberd, поскольку nginx и ejabberd не находятся в одном контейнере ejabberd.
Если вы видите docker-compose.yml, соединение ejabberd и mysql работает нормально, и я могу подключиться к mysql из ejabberd. Но, похоже, какая-то недостающая часть при подключении nginx к ejabberd.
ваша ejabberd-сервер и работает? –
Да, сервер ejabberd запущен и работает. –
Это поможет изолировать проблему с несколькими движущимися частями. Является http://192.168.99.102/ беседой с nginx. Есть http://127.0.0.1:5200/, воспитывая ejabberd? Отвечает ли 'docker-compose exec nginx ping ejabberd'? – BMitch