mod_aclr

Dmitriy MiksIr miksir at maker.ru
Fri Dec 23 17:06:29 MSK 2005


В таком случае к тестированию предлагаю модуль =)
Идея модуля такова - но становится обработчиком */* запросов. Апач 
вызывает этот хендлер только если не было никаких других обработок его, 
т.е. имеем то, что нам надо - выдачу голого файла.
В этом случае модуль выдает X-Accel-Redirect без тела самого файла 
(устанавливая Content-Length: 0)

Переданный X-Accel-Redirect состоит из двух частей - строки, принятой от 
вронтенда в заголовке X-Accel-Internal и собственно URI.
Таким образом конфиг nginx выгладит приблизительно так:

     server {
         listen       81;
         server_name  www;

         location / {
             proxy_pass          http://127.0.0.1:80;
             proxy_set_header    X-Real-IP  $remote_addr;
             proxy_set_header    X-Accel-Internal /internal_843t;
             proxy_set_header    Host $http_host;
             proxy_redirect_errors on;
         }

         location /internal_843t/ {
             root                /path/to/htdocs/;
             rewrite             ^/internal_843t/(.*)$ /$1 break;
             index               index.html index.htm;
             internal;
         }
     }

Модуль, собственно, умеет 2 директивы

    AccelRedirectSet [On|Off]
      Включение модуля
    AccelRedirectSize number[k|M]
      Установка минимального размера запрашиваемого файла, начиная с 
которого будут выдаваться редиректы
    Контенты обоих директив: server config, virtual host, directory

Установка в апач, конечно же
/usr/local/apache/bin/apxs -c mod_aclr.c
/usr/local/apache/bin/apxs -i mod_aclr.so
И руками добавить
LoadModule aclr_module        libexec/mod_aclr.so
AddModule mod_aclr.c

Буду признателен за любые замечания, как по алгоритму, так и по коду.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: mod_aclr.c
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20051223/2602db45/attachment.c>


More information about the nginx-ru mailing list