我想根据请求中收到的Accept
HTTP标头的值设置autoindex_format
值(html
,xml
,json
)。
我试过用map来做,但是在启动Nginx的时候得到了emerg
:
nginx: [emerg] invalid value "$autoindex_type" in /etc/nginx/nginx.conf
个字符
有没有人能建议一下,根据Nginx中HTTP请求的Accept
值,如何正确设置autoindex_format
的值?
谢谢你,谢谢
1条答案
按热度按时间snz8szmq1#
许多Nginx指令不接受变量作为参数。那些接受的指令应该明确地提到它。
有一种方法。您需要将每个
autoindex_format
语句放在自己的location
块中。这三个location
块将使用 fake URL,然后使用alias
将它们转换为正确的路径名。举例来说:
字符串
在上面的示例中,fake URL使用前缀
/html/
、/json/
和/xml/
-但您可能希望对它们进行模糊处理,以避免与系统中的真实的URL发生潜在冲突。我知道你已经接受了上面的答案,但我想添加第二个例子,它使用 named locations 而不是 fake URL,因此也避免了使用
alias
。它使用Nginx的一个(未记录的)功能,允许在变量中指定命名位置。举例来说:
型
try_files
至少需要两个参数,命名位置必须是最后一个参数。在示例中,$uri
用作第一个参数。要防止try_files
执行其 file 操作,请指定 fake 文件名,例如try_files nonexistent $autoindex_type;