problem in writing handler module which should be called via ssi

Mauro Stettler mauro.stettler at
Thu Jul 22 10:10:36 MSD 2010

i have also realized that this problem really only happens if i access
the location which has the generate_secure_download_link enabled via
ssi. if i directly request a uri in the location with the module
enabled i don't have any problem at all, only if the location gets
called via the virtual of the ssi, i run into this problem that
sometimes nginx doesn't close the connection to the client right.

would there maybe be any better way to implement what i am trying to
achieve? do i really have to do search and replace on the output
buffer chain?

On Wed, Jul 21, 2010 at 16:23, Mauro Stettler <mauro.stettler at> wrote:
> hi
> i have a problem while writing an nginx module which i want to
> generate secure download links, which can then be verified by the
> NginxHttpSecureDownload module and later maybe also the secure link
> module. i wrote it as a content handler which can then be called over
> an ssi include, like in the following example:
> <a href="<!--# include virtual="/gen_sec_link/this_is_my_link" -->">my link</a>
> together with the nginx conf:
>        location / {
>            ssi on;
>            root   html;
>        }
>       location /gen_sec_link {
>            generate_secure_download_link_expiration_time 3600;
>            generate_secure_download_link_secret $remote_addr;
>            generate_secure_download_link_url $uri;
>            generate_secure_download_link;
>        }
> the result will be something like:
> <a href="/gen_sec_link/this_is_my_link/3c5e04f315af807f3e757abd49dc14d3/4C46ABAF">my
> link</a>
> by using SSI i can save all the pattern matching and operating on the
> buffer chain, thats why i did it as handler module, instead of an
> output filter.
> i pushed the code to github:
> now my problem is that sometimes when i request many times from one
> browser it just never closes the connection and the browser seems to
> keep loading. first i thought the problem might be a mistake in the
> calculation of the content-length, but after many tests i believe that
> the content length that i give back is correct. i'm guessing that i
> missed something to tell nginx that the content is really finished
> now. on the other hand its strange that i only have this problem after
> refreshing a page which i requested already, the first request is
> always working.
> i would be glad for a few tips what else i have to check,
> thanks,
> mauro

More information about the nginx mailing list