Hello, guys.

I think I have a POC using autoindex, ssi and xslt. Obviously it requires further tweaking.

You can use configuration like this:
map $uri $doc {
    ~*/index[^/]*(.*) $1;
}
server {
    listen 8080;
    proxy_http_version 1.1;
    location /index/ {
        alias /tests/nginx;
        ssi on;
        proxy_pass http://localhost:8080/index2/;
    }
    location /index2 {
        autoindex on;
        autoindex_format xml;
        xslt_string_param base /index/$doc;
        xslt_stylesheet /tests/nginx/req.index.xslt;
        alias /tests/nginx;
    }
}
}
Along with a simple xslt like this:
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
    exclude-result-prefixes="xsl"
>
  <xsl:param name="base"/>

  <xsl:output method="html" omit-xml-declaration="yes"/>
  <xsl:template match="//directory">
    <xsl:value-of select="."/>
    |-><xsl:comment># include virtual="<xsl:value-of select="$base"/><xsl:value-of select="."/>/" </xsl:comment>
  </xsl:template>

</xsl:stylesheet>

And this will make nginx do recursive listing but the resulting output is far from ideal.
Also no error handling is done (should be done using error_page).

Regards,
Igor.

On 09.05.2019 3:26, Patrick wrote:
On 2019-05-09 08:48, Duke Dougal wrote:
Is there any way to get autoindex to return a recursive list of
files/directories?
What modules do you have available to work with?

Just using default built modules, there doesn't seem to be a way.

Using non-default modules, you could use:

1) ngx_http_perl + some perl

2) ngx_http_addition + some javascript added to the page to ajax query
and rewrite the page

3) the 3rd-party lua module + some lua


While it's definitely a hack, option #2 seems the best unless you need
to cater to javascript-less clients.

Anyone see a cleaner solution?
_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx


_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx

Reply via email to