Nextcloud 上的 502 Bad Gateway Error Docker 容器通过 Nginx Web 服务器上的子域代理
502 Bad Gateway Error on Nextcloud Docker Container proxied through Subdomain on Nginx Webserver
我 运行 在我的 Raspberry Pi 上安装 Nginx Web 服务器 4. 我正在尝试在子域上配置一个反向代理到 Nextcloud Docker 容器。但是,当我尝试在浏览器中访问此容器时,出现 502 Bad Gateway 错误。我已确保为我尝试通过服务器 Nextcloud 的子域生成 SSL 证书。
我的子域的服务器块如下所示:
server {
listen 443 ssl;
server_name subdomain.domain.tld;
ssl_certificate /pathtokey/subdomain.domain.tld/fullchain.pem;
ssl_certificate_key /pathtokey/subdomain.domain.tld/privkey;
location / {
proxy_pass https://127.0.0.1:9000/;
proxy_ssl_server_name on;
}
}
这就是我的 Nextcloud docker-compose.yml 文件的样子:
version: '2'
volumes:
nextcloud:
db:
services:
db:
image: linuxserver/mariadb
# command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
restart: always
volumes:
- db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=<rootPassword>
- MYSQL_PASSWORD=<mysqlPassword>
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud:fpm
ports:
- 127.0.0.1:9000:9000
links:
- db
volumes:
- /mnt/hdd/nextcloud:/var/www/html
restart: always
更改 .yml 文件后,我确保 运行 docker-compose up -d。
更改 nginx.conf 文件后,我 运行 sudo systemctl 重新启动 nginx。我也有 运行 sudo nginx -t.
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
我不确定这些配置中我的错误在哪里。如果有任何关于如何解决此问题的建议,我将不胜感激。
您正在使用 nextcloud:fpm
图像,它只是一个没有网络服务器的 php fpm 实例。
您的 nginx 代理配置很好,但它不会工作,因为您需要 nginx fastcgi_proxy
来将请求代理到后端 php 实例。
这是一个简单的例子:
nginx(fastcgi) <-> php-fpm(nextcloud) <-> db
第一个解决方案:
配置nginx可参考nextcloud官方文档或直接复制配置:nginx configuration
第二种解决方案:
请改用 nextcloud:apache
图片。此图像已包含一个 apache 网络服务器,您可以直接访问它而无需另一个 nginx 实例。
我 运行 在我的 Raspberry Pi 上安装 Nginx Web 服务器 4. 我正在尝试在子域上配置一个反向代理到 Nextcloud Docker 容器。但是,当我尝试在浏览器中访问此容器时,出现 502 Bad Gateway 错误。我已确保为我尝试通过服务器 Nextcloud 的子域生成 SSL 证书。
我的子域的服务器块如下所示:
server {
listen 443 ssl;
server_name subdomain.domain.tld;
ssl_certificate /pathtokey/subdomain.domain.tld/fullchain.pem;
ssl_certificate_key /pathtokey/subdomain.domain.tld/privkey;
location / {
proxy_pass https://127.0.0.1:9000/;
proxy_ssl_server_name on;
}
}
这就是我的 Nextcloud docker-compose.yml 文件的样子:
version: '2'
volumes:
nextcloud:
db:
services:
db:
image: linuxserver/mariadb
# command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
restart: always
volumes:
- db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=<rootPassword>
- MYSQL_PASSWORD=<mysqlPassword>
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud:fpm
ports:
- 127.0.0.1:9000:9000
links:
- db
volumes:
- /mnt/hdd/nextcloud:/var/www/html
restart: always
更改 .yml 文件后,我确保 运行 docker-compose up -d。 更改 nginx.conf 文件后,我 运行 sudo systemctl 重新启动 nginx。我也有 运行 sudo nginx -t.
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
我不确定这些配置中我的错误在哪里。如果有任何关于如何解决此问题的建议,我将不胜感激。
您正在使用 nextcloud:fpm
图像,它只是一个没有网络服务器的 php fpm 实例。
您的 nginx 代理配置很好,但它不会工作,因为您需要 nginx fastcgi_proxy
来将请求代理到后端 php 实例。
这是一个简单的例子:
nginx(fastcgi) <-> php-fpm(nextcloud) <-> db
第一个解决方案:
配置nginx可参考nextcloud官方文档或直接复制配置:nginx configuration
第二种解决方案:
请改用 nextcloud:apache
图片。此图像已包含一个 apache 网络服务器,您可以直接访问它而无需另一个 nginx 实例。