学习nginx试图了解try_files的工作方式。阅读官方文档,博客文章,但找不到与try_files一起使用时所需的信息以了解“ /”和“ //”之间的区别。
解决重定向问题并遇到以下情况(可能不是常见用例,但非常好奇nginx引擎下正在发生什么,因此希望不要出现问题)。如果知识渊博,请发出声音。具体来说,以下简化的配置的行为方式很奇怪:
server {
listen 80;
server_name server.local;
location / {
try_files _ @app;
}
location @app {
proxy_set_header HOST $host;
proxy_pass http://app;
}
}
upstream app { server 127.0.0.1:8080; }
server {
listen 8080;
root /var/www/html/app;
location / {
#try_files "/" =404;
try_files "//" =404;
}
}
如果try_files行为“ /”,则curl -I http://server.local/
的响应为:
HTTP/1.1 301 Moved Permanently
...
Location: http://server.local:8080/
如果try_files行是“ //”(或任何大于1的斜杠,例如“ //////”),则卷曲响应为:
HTTP/1.1 403 Forbidden
提出问题:
1)301重定向是如何实现的。无法从文档推断出来。
2)403是如何产生的,没有在任何地方指定。只看到404吗?
3)为什么重定向到上游端口?再次,谁导致了重定向?
请解释或指向详细的try_files算法的详细文档,谷歌搜索无济于事。 Nginx官方文档也很肤浅。