首页 > 解决方案 > Nginx 位置根重叠

问题描述

在这个 nginx 配置中:

server {
    server_name site.example.com;
    index index.html index.php;

    location / {
        root /projects/proj1/frontend;
    }

    location /api/v1.0/ {
        root /projects/proj1;
        try_files $uri /api/v1.0/index.php$is_args$args;           

        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass php:9000;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_NAME $fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
    }
}

为什么每个包含 site.example.com 的网址都由第一个位置提供服务,甚至是 site.example.com/api/v1.0/ ?提前谢谢了。

编辑:我已经尝试颠倒顺序,所以首先是 /api/v1.0/ 和第二个 /,但没有运气。

EDIT2:尝试使用 curl 响应是正确的,但是即使在隐身模式下,chrome 也会继续使用缓存...

标签: phpnginxnginx-locationnginx-config

解决方案


这是 nginx 中的预期行为。location /基本上匹配一切。如果您只想匹配/,请使用确切位置:location = /


推荐阅读