У меня есть сервер Ubuntu. Я использовал certbot, чтобы мой веб-сервер nginx использовал https. Я заставляю все соединения перенаправлять с порта 80 на порт 443.

Недавно я установил MadSonic, музыкальный сервер, который использует порт 4040.

Я хотел бы изменить свой сервер nginx, чтобы я мог получить доступ к этому порту через мой домен, и мне не нужно было открывать больше портов на моем маршрутизаторе. Например:

mydomain.com <-- Uses my web server
mydomain.com/music <-- Redirects to https://127.0.0.1:4040

Моя конфигурация nginx следующая:

server {

    root /var/www/html;

    index index.html index.htm index.nginx-debian.html;
    server_name www.domain.tk domain.tk; # managed by Certbot

    location /music {
        proxy_pass https://127.0.0.1:4040;
    }

    location / {
        try_files $uri $uri/ =404;
    }

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/domain.tk-0001/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/domain.tk-0001/privkey.pem;        
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

server {
    if ($host = www.domain.tk) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    if ($host = domain.tk) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    listen 80 ;
    listen [::]:80 ;
    server_name www.domain.tk domain.tk;
    return 404; # managed by Certbot
}

У меня проблема в том, что я хочу поддерживать безопасные соединения на музыкальном сервере, но когда я перенаправил на 127.0.0.1:4040, я потерял исходный сертификат.

Есть ли способ сделать то, что я хочу достичь?

aenon83
источник