Перенаправление сервера SHOUTcast на поддомен

Вот моя ситуация:

У меня есть сервер Linux от Scaleway, на котором размещен сервис SHOUTcast, на ip 1.2.3.4порт 8000Недавно я также арендовал домен myserv.com так что я могу перенаправить сервер на.

Я изменил сервер имен на тот, который предоставлен https://dns.he.net/ и начал делать записи. Получил запись A, чтобы указать мой домен на IP-адрес, и он работает нормально. Я могу получить доступ к своему серверу, открыв myserv.com:8000, но я бы хотел получить доступ к сервису SHOUTcast с поддоменом, а не добавлять порт. Скажем, если я открою sc.myserv.com это будет доступ 1.2.3.4:8000

Я провел некоторый поиск и обнаружил, что мне нужно использовать записи SRV, но я полагаю, что я не настроил правильно, потому что это не работает. Что я делаю неправильно?

myserv.com. 86400 IN A 1.2.3.4
_shoutcast._tcp.sc.myserv.com. 86400 IN SRV 0 5 8000 myserv.com.

заранее спасибо

2 ответа

Решение

Понятия не имею об Apache, но если вы работаете с Nginx, это действительно просто.

Это всего лишь случай установки директивы прокси в конфигурации вашего сервера для направления всех запросов на ваш поддомен на сервер Shoutcast на вашем компьютере. Что-то вроде этого:

server {
    server_name sc.myserv.com www.sc.myserv.com;
    location / {
        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto $scheme;
        proxy_pass              http://127.0.0.1:8000;
        proxy_read_timeout      90;
        proxy_redirect          off;
        proxy_buffering         off;
        tcp_nodelay             on;
    }
}

Если ваша статистика Shoutcast показывает IP-адрес вашего сервера вместо IP-адреса слушателя, то внутри блока сервера, но за пределами блока местоположения попробуйте добавить:

set_real_ip_from <YOUR_SERVER_IP>;
real_ip_header X-Real-IP;
real_ip_recursive on;

Вы также можете сопоставлять запросы, используя регулярное выражение, что, в свою очередь, делает полученные совпадения доступными в качестве переменных. Таким образом, директива о вашем местоположении становится:

location ~ /(.*) {

Теперь это будет захватывать все, что вы добавляете в свой прокси-адрес. Затем передать захваченный путь вдоль вашего proxy_pass становится:

proxy_pass http://127.0.0.1:8000/$1;

или для некоторых неуклюжих клиентов вы можете указать, что это mp3 в URL, например:

proxy_pass http://127.0.0.1:8000/$1/stream.mp3;

Вы не можете использовать записи SRV для этого. Там нет поддержки клиентов.

Если вы хотите получить доступ к вашей SHOUTcast/Icecast/HTTP/HTTP-подобной службе через порт по умолчанию 80, вам нужно использовать порт 80, а не 8000.

Другие вопросы по тегам