502 Ошибка сбоя шлюза в контейнере Nextcloud Docker, проксируемом через поддомен на веб-сервере Nginx

#docker #nginx #raspberry-pi #reverse-proxy #nextcloud

#docker #nginx #raspberry-pi #обратный прокси #nextcloud

Вопрос:

Я использую веб-сервер Nginx на своем Raspberry Pi 4. Я пытаюсь настроить обратный прокси-сервер на поддомене для контейнера Nextcloud Docker. Однако я получаю ошибку 502 Bad Gateway при попытке посетить этот контейнер в своем браузере. Я позаботился о том, чтобы сгенерировать SSL-сертификат для поддомена, который я пытаюсь использовать на сервере Nextcloud.

Вот как выглядит серверный блок для моего поддомена:

 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;
       }
}
  

И вот как выглядит мой файл docker-compose.yml для Nextcloud:

 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
  

Я не уверен, где моя ошибка в этих конфигурациях. Я был бы признателен за любые советы о том, как это исправить.

Ответ №1:

Вы используете nextcloud:fpm image, который является только экземпляром php fpm без веб-сервера.
Ваша конфигурация прокси-сервера nginx в порядке, но она не будет работать, потому что для этого вам понадобится nginx fastcgi_proxy для прокси-запроса к серверному экземпляру php.
Вот простая иллюстрация:
nginx (fastcgi) <-> php-fpm (nextcloud) <-> db

1-е решение:

Возможно, обратитесь к официальному документу nextcloud о том, как настроить nginx, или просто скопируйте конфигурацию config: nginx

2-е решение:

nextcloud:apache Вместо этого используйте изображение. Этот образ уже включал веб-сервер apache, и вы можете получить к нему прямой доступ, не требуя другого экземпляра nginx.

Комментарии:

1. Спасибо, я смог устранить проблему и заставить nextcloud работать должным образом, используя образ apache.