0

这是我的情况:

我有一台来自 Scaleway 的 linux 服务器,在 ip1.2.3.4和 port上托管 SHOUTcast 服务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.

先感谢您

4

2 回答 2

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,则在 server 块内但在 location 块之外尝试添加:

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/$1;

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

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

于 2018-02-26T02:02:35.377 回答
0

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

如果要在默认端口 80 上访问类似于 SHOUTcast/Icecast/HTTP/HTTP 的服务,则需要使用端口 80,而不是 8000。

于 2018-02-24T05:52:51.613 回答