代码之家  ›  专栏  ›  技术社区  ›  Marian

正在将SHOUTcast服务器重定向到子域

  •  0
  • Marian  · 技术社区  · 7 年前

    我的情况如下:

    我有一台来自Scaleway的linux服务器,在ip上托管SHOUTcast服务 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 回复  |  直到 7 年前
        1
  •  2
  •   miknik    7 年前

    不知道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;
    

    您还可以使用regex匹配请求,这反过来使捕获的匹配作为变量可用。因此,您的位置指令变为:

    location ~ /(.*) {

    这将捕获您添加到代理url的任何内容。然后,沿proxy\u pass传递捕获的路径变成:

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

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

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

        2
  •  0
  •   Brad    7 年前

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

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

    推荐文章