2016-06-20 3 views
0

Я пытаюсь обратного прокси-сервера управлять подключением 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.

+0

ваша ejabberd-сервер и работает? –

+0

Да, сервер ejabberd запущен и работает. –

+0

Это поможет изолировать проблему с несколькими движущимися частями. Является http://192.168.99.102/ беседой с nginx. Есть http://127.0.0.1:5200/, воспитывая ejabberd? Отвечает ли 'docker-compose exec nginx ping ejabberd'? – BMitch

ответ

0

Проблема, вероятно, связана с проблемой nginx. nginx не извлекает файлы .conf в каталоге /etc/nginx/conf.d.

Мне пришлось изменить файл/etc/nginx/sites-enabled/default и ввести местоположение внутри этого файла. Это решило мою проблему по этому вопросу.

Следующий пункт действия, чтобы проверить, почему Nginx не читает конф файл из директории /etc/nginx/conf.d

0

Похоже, что ваша часть server в восходящем потоке немного неправильная.

Вы можете попробовать server 127.0.0.1:5280; вместо server ejabberd:5280;?

+0

nginx и ejabberd работают на разных контейнерах докеров, поэтому localhost или 127.0.0.1 не будет полезен. –

Смежные вопросы