如何改进nginx userdir视图

sf6xfgos  于 2023-06-21  发布在  Nginx
关注(0)|答案(1)|浏览(166)

nginx

我有一个运行nginx的服务器,使用user-directories使用户能够在浏览器中查看数字。但是,默认设置使文件名难以查看,例如:

apache

在过去,我使用Apache,它有一个更容易阅读的默认值:

谁能告诉我如何配置nginx提供的视图,以便可以看到完整的文件名(如果可能的话,在文件类型中添加符号)?
我确实发现了这个问题,但是在实施答案时,我没有看到观点上的差异,所以我不清楚它是否在解决同一个问题。

ss2ws0br

ss2ws0br1#

你可以在模板中使用xslt模块。默认情况下不会构建此模块,您可以使用**--with-http_xslt_module**构建它
在这个例子中,我构建了动态模块。查看已安装的nginx构建参数

$ nginx -V 
$ cd /opt
$ wget https://nginx.org/download/nginx-1.24.0.tar.gz 
$ tar xzf nginx-1.24.0.tar.gz
$ cd /opt/nginx-1.24.0
$ ./configure ...installed nginx config params plus --with-http_xslt_module=dynamic
$ make
$ cp objs/ngx_http_xslt_filter_module.so /etc/nginx/modules/

在nginx.conf加载模块的主上下文中

load_module modules/ngx_http_xslt_filter_module.so

在主机配置中

location / {
  autoindex on;
  autoindex_format xml;
  xslt_stylesheet /etc/nginx/tpl/tpl.xslt;
}

例如模板文件/etc/nginx/tpl/tpl.xslt

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
    <html>
    <head>
        <style type="text/css">
            .container {
                width:100%;
                display: table;
            }
            table {
                margin-left: auto;
                margin-right: auto;
                width:90%;
                border: 1px #000 solid;
                border-collapse: collapse;
            }
            tr {
                background: #fff;
            }
            td,th {
                border: 1px #000 solid;
            }
        </style>
    </head>
    <body>
        <div class="container">
        <table class="listing">
        <caption>Index</caption>
        <tr>
            <th>name</th>
            <th>size</th>
            <th>date</th>
        </tr>
        <xsl:for-each select="list/*">
        <xsl:sort select="@mtime"/>
            <xsl:variable name="name">
                <xsl:value-of select="."/>
            </xsl:variable>
            <xsl:variable name="size">
                <xsl:if test="string-length(@size) &gt; 0">
                    <xsl:if test="number(@size) &gt; 0">
                        <xsl:choose>
                            <xsl:when test="round(@size div 1024) &lt; 1"><xsl:value-of select="@size" /></xsl:when>
                            <xsl:when test="round(@size div 1048576) &lt; 1"><xsl:value-of select="format-number((@size div 1024), '0.0')" />K</xsl:when>
                            <xsl:otherwise><xsl:value-of select="format-number((@size div 1048576), '0.00')" />M</xsl:otherwise>
                            </xsl:choose>
                    </xsl:if>
                </xsl:if>
            </xsl:variable>
            <xsl:variable name="date">
                <xsl:value-of select="substring(@mtime,9,2)"/>-<xsl:value-of select="substring(@mtime,6,2)"/>-<xsl:value-of select="substring(@mtime,1,4)"/><xsl:text> </xsl:text>
                <xsl:value-of select="substring(@mtime,12,2)"/>:<xsl:value-of select="substring(@mtime,15,2)"/>:<xsl:value-of select="substring(@mtime,18,2)"/>
            </xsl:variable>

        <tr>
            <td><a href="{$name}"><xsl:value-of select="."/></a></td>
            <td align="right"><xsl:value-of select="$size"/></td>
            <td><xsl:value-of select="$date"/></td>
        </tr>

        </xsl:for-each>
        </table>
        </div>
    </body>
    </html>
    </xsl:template>
</xsl:stylesheet>

检查配置并重新加载nginx

$ nginx -t && nginx -s reload

编辑:前.完全命令我:

./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -ffile-prefix-map=/data/builder/debuild/nginx-1.24.0/debian/debuild-base/nginx-1.24.0=. -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie' --with-http_image_filter_module --with-http_xslt_module=dynamic

相关问题