Re: RSS вьювер - как сконфигурировать nginx ?
Михаил Монашёв
postmaster на softsearch.ru
Чт Янв 14 19:53:23 MSK 2010
Здравствуйте, Илья.
Thursday, January 14, 2010, 6:36:21 PM, Вы писали:
ИВ> Здравствуйте, коллеги !
ИВ> Столкнулся с проблемой, для решения которой не могу сконфигурировать nginx :(
ИВ> Помогите пожалуйста :)
ИВ> Всем хорошо известны RSS фиды.
ИВ> Я хочу сделать веб сервис, который будет при запросе
ИВ> скачивать RSS канал и выводить на Веб страницу его содержимое.
ИВ> (Проблема мною выдумана, но принцип очень похож).
ИВ> Решение "в лоб" - прогуляться к бекенду, который скачает канал и выведет результат.
ИВ> Решение плохое, потому что есть такие каналы, которые
ИВ> выдаются по несколько секунд. Сколько секунд канал отдает свой
ИВ> контент - столько секунд бекенд будет занят... а бекенды у нас в
ИВ> дефиците.
ИВ> Решение "в обход":
ИВ> nginx умеет сторить данные в указанную директорию [
ИВ> proxy_store ]. Как бы так отконфигурировать nginx, чтобы он полез
ИВ> за RSS каналом на другой край земного шара, засторил его в свою
ИВ> директорию, а потом дергнул бы бекенд, передав ссылку, по которой
ИВ> бекенд может очень быстро скачать информацию ?
ИВ> На ум приходит модуль eval, но у него есть ряд недостатков -
ИВ> контент сторится в переменные, на которые в nginx суровые
ИВ> ограничения...
Я вот так скачиваю и сохраняю фавиконки с других сайтов:
proxy_cache_path /opt1/favicons levels=1:1 keys_zone=favicons:50m inactive=3d max_size=5G;
server {
listen 1.2.3.4:80;
server_name site.ru;
proxy_intercept_errors on;
error_page 301 302 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 422 423 424 425 426 449 500 501 502 503 504 505 506 507 509 510 = /zero;
proxy_cache favicons;
proxy_cache_key $proxy_host;
proxy_temp_path /opt1/favicons/proxy_tmp_path;
proxy_cache_valid any 30d;
proxy_ignore_headers X-Accel-Redirect X-Accel-Expires Expires Cache-Control;
proxy_hide_header Location;
expires 30d;
location / {
return 204;
}
location = /zero {
return 204;
}
# aa.ru
location ~ "^/([a-z0-9-]{1,50}\.[a-z]{2,4})$" {
proxy_set_header Host $1;
proxy_pass http://$1/favicon.ico;
}
# bb.aa.ru
location ~ "^/([a-z0-9-]{1,50}\.[a-z0-9-]{1,50}\.[a-z]{2,4})$" {
proxy_set_header Host $1;
proxy_pass http://$1/favicon.ico;
}
# cc.bb.aa.ru или 111.222.33.44
location ~ "^/([a-z0-9-]{1,50}\.[a-z0-9-]{1,50}\.[a-z0-9-]{1,50}\.[a-z0-9]{1,4})$" {
proxy_set_header Host $1;
proxy_pass http://$1/favicon.ico;
}
}
При запросе http://site.ru/ya.ru отдастся http://ya.ru/favicon.ico
Ты можешь сделать аналогично.
--
С уважением,
Михаил Монашёв, SoftSearch.ru
mailto:postmaster at softsearch.ru
ICQ# 166233339
http://michael.mindmix.ru/
Без бэкапа по жизни.
Подробная информация о списке рассылки nginx-ru