在此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即使在隐身模式下也继续使用缓存...
这是nginx中的预期行为。 location /
基本匹配所有内容。如果只想匹配/
,请使用确切的位置:location = /