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;
[....]
}