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