Icecast https (Nginx прокси)

Последней проблемой при установке и настройке радиостанции было отсутсвие https на контрольной панели, аудиопотоке и json-файлах с метаданными. Icecast автоматически устанавливается по адресу http://127.0.0.69:8000, а сам аудиопоток, соответственно, http://127.0.0.69:8000/listen.mp3

На дворе 2019 год, и любой современный браузер будет если не ругаться, то сообщать о небезопасном сайте, если подключение происходит без https, а значит при добавлении плеера с нашим аудиопотоком страница будет считаться небезопасной. Решение оказалось проще, чем я думал - проксирование с помощью Nginx.

Установка Nginx на Ubuntu:

sudo apt-get update 
sudo apt-get install nginx

Идея простая: перенаправлять запрос на нужный адрес с http с какого-нибудь адреса с https (считаем, что домен с SSL, пусть этой будет бесплатный Let's Encrypt, у вас есть): При переходе на https://domain.com/radio получать информацию с http://127.0.0.69:8000/listen.mp3

Файл /etc/nginx/vhosts/www-root/domain.com.conf - конфигурация Nginx для этого домена. Нам нужна часть с location:

location @fallback {
    proxy_pass http://127.0.0.1:8080;
    proxy_redirect http://127.0.0.1:8080 /;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Port $server_port;
    access_log off;
}

Добавляем (не заменяем, а добавляем) часть кода:

location /radio {
    proxy_pass http://127.0.0.69:8000/listen.mp3;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Port $server_port;
    access_log off;
    }
}

Таким образом, при переходе на https://domain.com/radio мы получим аудиопоток с [http://127.0.0.69:8000/listen.mp3](http://127.0.0.69:8000/listen.mp3, сохранив https и теперь перед браузером не будет стыдно.

Стоить обновить эту страницу, там всё поменялось...

June 22, 2019