Здравствуйте, Andrew.
Вы писали 13 ноября 2006 г., 14:26:16:
On Sun, 12 Nov 2006, Pavel V. wrote:
Здравствуйте, nginx-ru.
Пытаюсь раздавать mp3 контент с помощью Nginx.
При прослушивании с помощью апача (Apache-2.0.59/mpm_worker) проигрывание идет
"ровно".
При попытке перевести нагрузку на нгинкс (nginx-0.4.0) с помощью
iptables-DNAT
Опишите, пожалуйста, по-подробнее - как вы разделяете запрос на *.mp3 к
Апачу и запрос к nginx
В вашем *.m3u файле ссылка ведёт куда? на 80-й порт? или на 8080 ?
Два веб-сервера, апач и nginx висят на портах 8080 и 8081. В
m3u ссылка на файл на 8080 порт.
А почему ссылку сразу на 8081 не делаете?
Перевод нагрузки с апача на
nginx осуществляется добавлением правила
iptables -t nat -I PREROUTING -p tcp --dport 8080 -j DNAT
--to-destination my_ip:8081
Насколько я вижу, это правило _весь_ трафик перекинет на порт 8081
Правильно ли я понимаю, что снаружи доступен только порт 8080 ? и
недоступен 8081 ?
Однако, весело у вас устроено
- приходящие извне пакеты на порт 8080 перенаправляются на порт 8081
- слушающий там nginx отдаёт статику и остальное проксирует на порт 8080
- iptables не трогает эти пакеты, ибо они идут с localhost
- на порту 8080 слушает Апач
- исходящие пакеты проделывают аналогичный непрямой путь, только в
обратном направлении
Думаю, причина "заиканий" в хаотических задержках, вносимых iptables с
включённым NAT.
Я бы сделал так :
- nginx слушает на порту 8080 и
- отдаёт статику и *.mp3
- остальное проксирует на порт 8081
- Апач слушает на порту 8081 и отдаёт html и *.m3u
Т.е. "поменял бы портами" Апач и nginx и выбросил бы излишний iptables.
Конфигурация nginx примерно такая:
server {
listen 83.172.16.22:8080;
server_name hostname.domain;
location ~* \.(avi|mp3|mov|ogg|gif|jpg|css|js)$ {
root /web/hostname/htdocs/music_new;
}
location / {
proxy_pass http://127.0.0.1:8081/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Host $host;
}
}
--
Best regards,
Andrew Kopeyko <kaa@xxxxxxxx>
http://www.zvuki.ru/ sysadmin