这是我的情况:
我有一台来自Scaleway的Linux服务器,在ip 1.2.3.4
端口8000
上托管SHOUTcast服务
最近我还租了一个域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.
提前谢谢
答案 0 :(得分:1)
不知道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,如下所示:
proxy_pass http://127.0.0.1:8000/$1/stream.mp3;
答案 1 :(得分:0)
您无法使用SRV记录。没有客户支持。
如果要在默认端口80上访问SHOUTcast / Icecast / HTTP / HTTP类似服务,则需要使用端口80,而不是8000.