如何配置nginx以显示文件内容而不是下载它?

14

我已配置了目录索引,每次点击文件时它都会被下载。

我想告诉nginx在文本文件中显示内容而不是将其下载。

当我使用wget下载这些文本文件时,我仍然希望可以下载。

我该怎么做?


请点击这里 - Sergey Moiseev
3个回答

19

感谢Sergey Moiseev的评论。

答案非常简单。

打开您的配置文件并添加以下内容:

types {
    text/plain sh;
}

这将扩展名为.sh的文件映射到mime类型text/plain

它有一个错别字,应该是types { ... },详见http://nginx.org/en/docs/http/ngx_http_core_module.html#types。 - fluter
5
没有扩展名的文件是用来做什么的? - Siraj Alam

7
Nginx以非常简单的方式实现此功能。
location ^~ /log {
           sendfile on;
           sendfile_max_chunk 1m;
           alias  /var/log/nginx;
           autoindex on;
           try_files $uri $uri/ =404;

           types {
                    text/plain log;
                }
        }

在上面的示例中,它将匹配扩展名为.log的文件,并将其作为添加到Nginx日志中的纯文本进行处理。

2

只需在location块中设置内容类型。

在我的情况下,我想要提供一个VERSION文件,但默认情况下浏览器会下载它(因为它作为application/x-octet-stream提供)。如果我让nginx使用text/plain的Content-type发送它,浏览器将显示它而不是下载它。

location = /VERSION {
    root /usr/share/nginx/html;
    add_header Cache-Control 'must-revalidate';
    add_header Content-Type text/plain;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接