如何将上游从nginx转发到上游服务器
How to forward upstream from nginx to upstream server
我正在尝试在 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
以上命令returns回复
上游必须设置为托管 ejabberd,因为 nginx 和 ejabberd 不在同一个 ejabberd 容器中。
如果您看到 docker-compose.yml,ejabberd 和 mysql 连接正常,我可以从 ejabberd 连接到 mysql。但是在将 nginx 连接到 ejabberd 时似乎缺少了一些内容。
看起来你在上游的 server
部分有点错误。
你能试试 server 127.0.0.1:5280;
而不是 server ejabberd:5280;
吗?
这个问题可能是由于 nginx 问题。 nginx 不获取 /etc/nginx/conf.d 目录下的 .conf 文件。
我必须更改文件 /etc/nginx/sites-enabled/default 并输入该文件中的位置。这解决了我的问题。
下一个操作项目是检查为什么 nginx 不从 /etc/nginx/conf.d 目录中读取 conf 文件
我正在尝试在 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
以上命令returns回复
上游必须设置为托管 ejabberd,因为 nginx 和 ejabberd 不在同一个 ejabberd 容器中。
如果您看到 docker-compose.yml,ejabberd 和 mysql 连接正常,我可以从 ejabberd 连接到 mysql。但是在将 nginx 连接到 ejabberd 时似乎缺少了一些内容。
看起来你在上游的 server
部分有点错误。
你能试试 server 127.0.0.1:5280;
而不是 server ejabberd:5280;
吗?
这个问题可能是由于 nginx 问题。 nginx 不获取 /etc/nginx/conf.d 目录下的 .conf 文件。
我必须更改文件 /etc/nginx/sites-enabled/default 并输入该文件中的位置。这解决了我的问题。
下一个操作项目是检查为什么 nginx 不从 /etc/nginx/conf.d 目录中读取 conf 文件