NGINX try_files算法:为什么'try_files“ /” = 404;'与'try_files“ //” = 404不同;'

时间:2019-04-30 11:51:29

标签: file nginx try-catch nginx-reverse-proxy nginx-config

学习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官方文档也很肤浅。

0 个答案:

没有答案