将 SHOUTcast 服务器重定向到子域

Redirecting SHOUTcast server to subdomain

这是我的情况:

我有一台来自 Scaleway 的 linux 服务器托管 SHOUTcast 服务,在 IP 1.2.3.4、端口 8000 上 最近我也租了一个域名myserv.com所以我可以将服务器重定向到.

我把Nameserver换成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.

提前致谢

您不能为此使用 SRV 记录。没有客户端支持。

如果您想在其默认端口 80 上访问您的 SHOUTcast/Icecast/HTTP/HTTP-like 服务,您需要使用端口 80,而不是 8000。

不知道 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 ~ /(.*) {

现在这将捕获您添加到代理 url 的任何内容。然后沿着你的 proxy_pass 传递捕获的路径变成:

proxy_pass http://127.0.0.1:8000/;

或者对于一些笨拙的客户,您可能希望在 url 中指定它是 mp3,如下所示:

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