【发布时间】:2017-08-10 05:46:01
【问题描述】:
我正在尝试在 docker 中使用 nginx 反向代理 ejabberd 连接管理器。
以下是我的 docker-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 在我的本地 docker 中可用。
以下是我的服务器配置文件,它包含在 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是我的docker机器的IP。
docker-compose exec nginx ping ejabberd
上面的命令返回一个回复。
必须将上游设置为托管 ejabberd,因为 nginx 和 ejabberd 不在同一个 ejabberd 容器上。
如果您看到 docker-compose.yml,ejabberd 和 mysql 连接工作正常,我可以从 ejabberd 连接到 mysql。但是在将 nginx 连接到 ejabberd 时似乎有一些缺失。
【问题讨论】:
-
您的 ejabberd-server 是否已启动并正在运行?
-
是的,ejabberd 服务器已启动并正在运行。
-
这将有助于隔离多个移动部件的问题。 192.168.99.102 正在与 nginx 交谈。 127.0.0.1:5200 是在培养 ejabberd 吗?
docker-compose exec nginx ping ejabberd有回应吗? -
@BMitch 我已编辑问题以获取更多信息。命令
docker-compose exec nginx ping ejabberd返回响应 -
你没有提到你是否能够直接与 ejabberd 或 nginx 对话,这是需要确定哪些是抛出 404 的。
标签: nginx docker ejabberd docker-compose