Я запустил контейнер докеров с изображением nextcloud (отсюда https://hub.docker.com/_/nextcloud/) с помощью этого скрипта:
docker run \
--rm \
--detach \
--publish 54002:80 \
--name cloud.example.com \
--volume /srv/cloud.example.com/:/var/www/html \
nextcloud
И я сделал обратный прокси с nginx:
server {
listen *:80;
server_name cloud.example.com;
proxy_set_header Host cloud.example.com;
location / {
rewrite ^(.*)$ https://cloud.example.com$1 permanent;
}
}
server {
listen *:443 ssl http2;
server_name cloud.example.com;
proxy_set_header Host cloud.example.com;
set $service_port 54002;
set $service_ip 192.168.2.33;
ssl_certificate /etc/letsencrypt/live/cloud.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/cloud.example.com/privkey.pem;
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
location / {
proxy_pass http://$service_ip:$service_port;
}
}
И я получаю код ошибки 502. Я проверил из локальной сети http: // server_ip: 54002, работает нормально, также работает только http сайт с прокси! Конфигурация Http Nginx, которая работает:
server {
set $service_port 54002;
set $service_ip 192.168.2.33;
set $domain_name cloud.example.com;
listen *:80;
server_name $domain_name;
proxy_set_header Host $domain_name;
location / {
proxy_pass http://$service_ip:$service_port;
}
}
Что не так с моей конфигурацией https?
После многих часов борьбы с этой проблемой я наконец нашел ошибку в конфигурации своего сервера. С nginx все нормально, но я забыл разрешить порт 443 в ufw. Я ошибочно решил, что правило «Nginx HTTP» достаточно для HTTP- и HTTPS-подключений, но на самом деле был открыт только порт 80 / tcp, поэтому я ввел ufw allow 443/tcp
и все ошибки исчезли! @alexus и другие извините, что зря трачу ваше время!