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


person Wassinger    schedule 22.06.2018    source источник
comment
Я предполагаю, что он специально настроен так, чтобы быть недоступным через незащищенный http. Вам придется покопаться в документации, чтобы найти способ его настроить, или просто взломать исходный код в вашей среде IDE и отладить запрос построчно...   -  person John R    schedule 22.06.2018


Ответы (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; 

       [....]
}
person Lyr    schedule 22.06.2018
comment
Ну, я уже связался с файлом docker-compose, поэтому команда, конечно, docker-compose up. - person Wassinger; 23.06.2018
comment
@Wassinger, мне плохо за связанный файл. Что касается отладки, как я уже сказал, если вы используете нестандартные порты (12345 и 12346), проблема, скорее всего, заключается в том, что HTTP по умолчанию перенаправляется на 443, а не на 12346. Что-то вроде docker-compose exec proxy "cat /etc/nginx/vhost.d/*" должно сбрасывать конфигурацию виртуального хоста nginx, чтобы проверить это. А вот пример того, как jwilder возится с портами, если вы действительно хотите github.com/ jwilder/nginx-proxy/search?q=WEB_PORTS - person Lyr; 25.06.2018
comment
Похоже, что /etc/nginx/vhost.d/ пусто для прокси - person Wassinger; 26.06.2018
comment
Также я обнаружил, что в /etc/nginx/conf.d/default.conf/ есть блок для порта 80 без 443, как вы упомянули в конце своего ответа. Другой блок с 443 также содержит location / {proxy_pass https://mycloud.example.com;}, интересно, это связано? - person Wassinger; 26.06.2018
comment
Пустой блок, если я правильно помню, скрипт jwilder dockergen не смог правильно сгенерировать файл conf. Должен быть файл с именем [your_VIRTUAL_HOST].conf. Причина может быть в логах прокси, проверьте docker-compose logs proxy - person Lyr; 26.06.2018