我想测试nginx的echo模块。我想回复我在浏览器中键入的内容。
我的nginx配置:
index index.php index.html index.htm index.nginx-debian.html ;
location / {
try_files $uri $uri/ /index.php =404;
}
location /hello {
echo $request_uri;
}
输入网址:http://127.0.0.1/hello/.
返回:返回文件,文件包含内容:/hello/
输入网址:http://127.0.0.1/hello/hi
返回:返回文件,文件包含内容:/hello/hi
输入网址:http://127.0.0.1/hello/hi.html
在浏览器中返回打印 /hello/hi.html
。
我的问题: 为什么没有html后缀的url会成为下载文件? 怎么解决? 我只想在浏览器中打印网址。
答案 0 :(得分:3)
nginx
确定扩展程序中的Content-Type
。这些包含在名为mime-types
的文件中。您可以通过在default-type
块中放置location
指令来覆盖此行为。例如:
location /hello {
types {}
default_type text/html;
echo $request_uri;
}
有关详情,请参阅this doucument。
答案 1 :(得分:1)
浏览器是否会最终呈现页面/下载文件取决于其他因素,例如,http标头中的'Content-type' / 'Content-Disposition'
Content-Disposition takes one of two values, `inline' and
`attachment'. `Inline' indicates that the entity should be
immediately displayed to the user, whereas `attachment' means that
the user should take additional action to view the entity.
您可以在访问时检查并比较http响应 / hello / hi或/hello/hi.html,检查这两个标头中至少有一个可能没有正确设置,在这种情况下,更可能内容类型不是'text / html'这里
解决方案是为您的路径指定内容类型,可能类似于
location /hello {
default_type "text/html";
echo $request_uri;
}
或
location /hello {
add_header Content-Type 'text/javascript;charset=utf-8';
echo $request_uri;
}