我有数千个名为 的文本文件ABC
。我想从不同的 URL 访问这些文件: - 如果是ABC
或ABC.txt
我想添加default_type text/plain
并提供该文件 - 如果是ABC.html
我想添加default_type text/html
并提供该文件(这样我就有了同一个文件的两个不同版本)。
在 nginx 中可以做到这一点吗?一个 URL 只能与一个location
指令匹配,这让我很难找到一种“干净”的方法。
答案1
您应该尝试为每个文件扩展名创建一个单独的位置并使用内部重定向。它将类似于以下内容:
location /ABC.txt {
add_header Content-Type text/plain;
rewrite /ABC last;
}
location /ABC.html {
add_header Content-Type text/html;
rewrite /ABC last;
}
location /ABC {
alias /var/www/ABC.txt
}
我不保证它会起作用,因为我还没有在真正的 nginx 上测试过它。
答案2
nginx 根据 URI 处理建议的 mimetype。我尝试了以下组合,并且有效:
root /usr/share/nginx/www;
default_type text/plain;
location = /abc.txt {
alias /usr/share/nginx/www/abc;
}
location /abc.html {
alias /usr/share/nginx/www/abc;
}