nginx отвечает на HTTPS, но не на HTTP

Я использую докертизированное Nextcloud, как показано здесь: https://github.com/nextcloud/docker/tree/master/.examples/docker-compose/with-nginx-proxy-self-signed-ssl/mariadb/fpm

Я установил это с портом 80, сопоставленным с 12345, и портом 443, сопоставленным с 12346. Когда я иду в https://mycloud.example.com:12346, Я получаю запрос на самоподписанный сертификат, но в остальном все в порядке, и я вижу веб-интерфейс NextCloud. Но когда я иду в http://mycloud.example.com:12345 Nginx (proxy контейнер) выдает ошибку "503 Сервис временно недоступен". Ошибка также отображается в proxyлоги.

Как я могу диагностировать проблему? Почему HTTPS работает, а не HTTP?

1 ответ

Можете ли вы указать команду docker, запускающую nextcloud, или файл docker-compose?

Диагностика, как обычно, с докером: получить идентификатор для текущего запущенного контейнера

docker ps

Тогда проверь логи

docker logs [id or name of your container] docker-compose logs [name of your service]

Подключить в контейнере

docker exec -ti [id or name of your container] [bash or ash if alpine based container]

Там читайте соответствующие файлы nginx conf. В вашем случае я бы проверил перенаправление с http на https, скорее всего, это что-то вроде ниже, без конкретного порта, указанного для https, следовательно, порт 443, следовательно, не работает

server {
       listen         80;
       server_name    my.domain.com;
       return         301 https://$server_name$request_uri;    <======== no port = 443
}

server {
       listen         443 ssl;
       server_name    my.domain.com;
       # add Strict-Transport-Security to prevent man in the middle attacks
       add_header Strict-Transport-Security "max-age=31536000" always; 

       [....]
}
Другие вопросы по тегам