我正在尝试使用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 可在我的本地泊坞广告中使用。
以下是我的服务器配置文件,它包含在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;
}
}
但是当我尝试访问网址 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连接工作正常,我可以从ejabberd连接到mysql。但是当连接nginx到ejabberd时似乎有一些缺失的部分。
答案 0 :(得分:1)
问题可能是由于nginx问题。 nginx不会在/etc/nginx/conf.d目录下选择.conf文件。
我必须更改文件/ etc / nginx / sites-enabled / default并输入该文件中的位置。这解决了我对这个问题的疑问。
下一个操作项是检查nginx从/etc/nginx/conf.d目录中读取conf文件的原因
答案 1 :(得分:0)
看起来你上游的server
部分有点不对。
您可以尝试server 127.0.0.1:5280;
代替server ejabberd:5280;
吗?