我有一个在端口 8000 上运行的 icecast 服务器,但是当我使用 NGINX 设置代理时,我似乎无法让它看起来像原始服务器。
我想知道有没有办法让 NGINX 停留在 8000 端口,但允许来自 80 端口的流量
server {
listen 80;
listen [::]:80;
server_name example.com;
gzip on;
gzip_proxied any;
gzip_comp_level 4;
gzip_types text/css application/javascript image/svg+xml;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
location / {
proxy_pass http://127.0.0.1:8000/;
}
}
我也尝试过
server {
listen 80;
listen [::]:80;
server_name onlineradio.example.com;
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-Host $host;
proxy_set_header X-Forwarded-Server $host;
location / {
proxy_set_header Accept-Encoding "";
proxy_pass http://127.0.0.1:8000/;
sub_filter_types application/xspf+xml audio/x-mpegurl audio/x-vclt text/css text/html text/xml;
sub_filter ':8000/' '/';
sub_filter '@localhost' '@onlineradio.example.com';
sub_filter 'localhost' $host;
sub_filter 'Mount Point ' $host;
}
}
但是当我尝试通过我的 Nodejs 应用程序连接到它时,使用包时它不会加载var icecast = require('icecast-stack')
我知道该插件会查找icy-metaint
icecast 流所具有的标头。
据我了解,我的 NGINX 需要传递该标头
我需要传递的标题是它们来自https://stream.radiomedia.com.au:8003/stream
Headers(16) °
°String: 'Server: Icecast 2.4.4'é à
key: 'Server',
value: 'Icecast 2.4.4'
è,
°String: 'Connection: Close'é à key: 'Connection', value: 'Close' è,
°String: 'Date: Tue, 08 Nov 2022 06:53:55 GMT'é à
key: 'Date',
value: 'Tue, 08 Nov 2022 06:53:55 GMT'
è,
°String: 'Content-Type: audio/mpeg'é à
key: 'Content-Type',
value: 'audio/mpeg'
è,
°String: 'Cache-Control: no-cache, no-store'é à
key: 'Cache-Control',
value: 'no-cache, no-store'
è,
°String: 'Expires: Mon, 26 Jul 1997 05:00:00 GMT'é à
key: 'Expires',
value: 'Mon, 26 Jul 1997 05:00:00 GMT'
è,
°String: 'Pragma: no-cache'é à key: 'Pragma', value: 'no-cache' è,
°String: 'icy-br:128'é à key: 'icy-br', value: '128' è,
°String: 'ice-audio-info: ice-samplerate=44100;ice-bitrate=128;ice-channels=2'é à
key: 'ice-audio-info',
value: 'ice-samplerate=44100;ice-bitrate=128;ice-channels=2'
è,
°String: 'icy-br:128'é à key: 'icy-br', value: '128' è,
°String: 'icy-description:The Sound Of Indie'é à
key: 'icy-description',
value: 'The Sound Of Indie'
è,
°String: 'icy-genre:indie'é à key: 'icy-genre', value: 'indie' è,
°String: 'icy-name:DRN1'é à key: 'icy-name', value: 'DRN1' è,
°String: 'icy-pub:1'é à key: 'icy-pub', value: '1' è,
°String: 'icy-url:http://DOMAIN GO HERE à
key: 'icy-url',
value: 'http://DOMAIN GO HERE.com'
è,
°String: 'icy-metaint:16000'é à key: 'icy-metaint', value: '16000' è,
server: 'Icecast 2.4.4',
Server: 'Icecast 2.4.4',
connection: 'Close',
Connection: 'Close',
date: 'Tue, 08 Nov 2022 06:53:55 GMT',
Date: 'Tue, 08 Nov 2022 06:53:55 GMT',
'content-type': 'audio/mpeg',
'Content-Type': 'audio/mpeg',
'cache-control': 'no-cache, no-store',
'Cache-Control': 'no-cache, no-store',
expires: 'Mon, 26 Jul 1997 05:00:00 GMT',
Expires: 'Mon, 26 Jul 1997 05:00:00 GMT',
pragma: 'no-cache',
Pragma: 'no-cache',
'icy-br': '128',
'ice-audio-info': 'ice-samplerate=44100;ice-bitrate=128;ice-channels=2',
'icy-description': 'The Sound Of Indie',
'icy-genre': 'indie',
'icy-name': 'DOMAIN',
'icy-pub': '1',
'icy-url': 'http://DOMAIn GIO here.com',
'icy-metaint': '16000'
答案1
曾经有关于此主题的先前问题
一般不建议使用反向代理 Icecast,因为很难覆盖所有基础并使一切正常运行。事情可能会以微妙和意想不到的方式中断。
话虽如此,有人将他们的 NginX 设置发布到 StackOverflow,但这又是非常不简单的。
更容易让 Icecast 监听端口 80 和 443。然而这需要专用的 IP 地址才能工作。