docker - 使用 nginx 通过 docker 访问 nextcloud 时出现错误 502
问题描述
嘿嘿!
更新:我想通了并添加了我的答案。
我目前正在学习 docker,我已经编写了一个 docker-compose 文件,该文件应该启动 nginx、gitea、nextcloud并通过域名作为反向代理将它们全部路由。
除了nextcloud ,一切都很顺利。我可以通过 localhost:3001 访问它,但不能通过 nginx 反向代理。gitea 一切都很好,它可以双向工作。
我得到的错误是:
nginx_proxy | 2018/08/10 00:17:34 [error] 8#8: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.19.0.1, server: cloud.example.ca, request: "GET / HTTP/1.1", upstream: "http://172.19.0.4:3001/", host: "cloud.example.ca"
码头工人-compose.yml:
version: '3.1'
services:
nginx:
container_name: nginx_proxy
image: nginx:latest
restart: always
volumes:
// Here I'm swapping out my default.conf for the container's by mounting my
directory over theirs.
- ./nginx-conf:/etc/nginx/conf.d
ports:
- 80:80
- 443:443
networks:
- proxy
nextcloud_db:
container_name: nextcloud_db
image: mariadb:latest
restart: always
volumes:
- nextcloud_db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD_FILE: /run/secrets/cloud_db_root
MYSQL_PASSWORD_FILE: /run/secrets/cloud_db_pass
MYSQL_DATABASE: devcloud
MYSQL_USER: devcloud
secrets:
- cloud_db_root
- cloud_db_pass
networks:
- database
gitea_db:
container_name: gitea_db
image: mariadb:latest
restart: always
volumes:
- gitea_db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD_FILE: /run/secrets/cloud_db_root
MYSQL_PASSWORD_FILE: /run/secrets/cloud_db_pass
MYSQL_DATABASE: gitea
MYSQL_USER: gitea
secrets:
- cloud_db_root
- cloud_db_pass
networks:
- database
nextcloud:
image: nextcloud
container_name: nextcloud
ports:
- 3001:80
volumes:
- nextcloud:/var/www/html
restart: always
networks:
- proxy
- database
gitea:
container_name: gitea
image: gitea/gitea:latest
environment:
- USER_UID=1000
- USER_GID=1000
restart: always
volumes:
- gitea:/data
ports:
- 3000:3000
- 22:22
networks:
- proxy
- database
volumes:
nextcloud:
nextcloud_db:
gitea:
gitea_db:
networks:
proxy:
database:
secrets:
cloud_db_pass:
file: cloud_db_pass.txt
cloud_db_root:
file: cloud_db_root.txt
我的 default.conf 被挂载到 /etc/nginx/conf.d/default.conf
upstream nextcloud {
server nextcloud:3001;
}
upstream gitea {
server gitea:3000;
}
server {
listen 80;
listen [::]:80;
server_name cloud.example.ca;
location / {
proxy_pass http://nextcloud;
}
}
server {
listen 80;
listen [::]:80;
server_name git.example.ca;
location / {
proxy_pass http://gitea;
}
}
我当然有我的主机文件设置来将域路由到本地主机。我做了一些谷歌搜索,但到目前为止我发现的任何东西似乎都与我遇到的情况一致。提前致谢!
解决方案
长话短说,不只是使用 nextcloud 将代理反向代理到端口 80。只是不允许。我已经部署了它,并且使用超过 443 的证书工作得很好!:)
推荐阅读
- javascript - 反应:更新数组时观察到滞后
- initialization - Stanza: 如何检查数组中的元素是否已初始化?
- terminal - gnome 终端:找不到目录(在另一个终端中运行 python 脚本)
- javascript - 显示具有时间限制 JS 而非 Jquery 的隐藏 div
- google-apps-script - 如何使用 Google Apps 脚本获取有关 Google Docs 的建议
- asp.net-core - 如何在 ASP.NET 中的 Bootstrap Carousel 上放置一个持久横幅
- angularjs - '/:routeparams' 正在覆盖 angularjs 中的其他路由
- python - uwsgi.service 的作业失败,因为在 ubuntu 20.04 上安装 geonode 3.2 期间控制进程以错误代码退出
- android - 颤振构建失败 DER 长度的短读取
- google-apps-script - Google Apps 脚本:TypeError:sheet.getActiveSheet 不是函数 - 全局变量刚刚开始失败