将 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;
这是我的情况:
我有一台来自 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;