Nginx位置规则不适用

Nginx位置规则不适用,nginx,server,location,Nginx,Server,Location,我想在一个由NGINX服务器块(不是默认站点)配置的域上运行WordPress和YOURLS。由于两者都需要以不同的方式处理URL,因此它们需要不同的try\u文件指令。WordPress位于域的根目录(domain.tld)上,而YOURLS正在安装到/g/目录。尽管有这两个位置规则,但我在YOURLS生成的任何链接(例如domain.tld/g/linkname,都是指向外部URL的重定向)上都会得到404,尽管我可以访问管理后端。 据我所知,为了让NGINX以不同的方式处理direct和/

我想在一个由NGINX服务器块(不是默认站点)配置的域上运行WordPress和YOURLS。由于两者都需要以不同的方式处理URL,因此它们需要不同的
try\u文件
指令。WordPress位于域的根目录(domain.tld)上,而YOURLS正在安装到/g/目录。尽管有这两个位置规则,但我在YOURLS生成的任何链接(例如domain.tld/g/linkname,都是指向外部URL的重定向)上都会得到404,尽管我可以访问管理后端。 据我所知,为了让NGINX以不同的方式处理direct和/g/url,向位置规则声明(一个用于/g/,一个用于/)应该足够了——我的想法有什么错误吗?
try\u文件
规则是正确的,在其他单个应用程序服务器块上运行良好(WordPress和YOURLS在单独的服务器块上安装)

服务器块定义配置如下所示:

服务器{
听[:]:80;
听80;
服务器名称domain.tld www.domain.tld;
返回301https://domain.tld$request_uri;
}
服务器{
听[:]:443 ssl;
听443ssl;
ssl_certificate/etc/letsencrypt/live/domain.tld/fullchain.pem;
ssl_certificate_key/etc/letsencrypt/live/domain.tld/privkey.pem;
添加_头严格传输安全“最大年龄=31536000;包括子域”;
root/var/www/html/domain.tld;
#如果您正在使用php,请将index.php添加到列表中
index.html index.htm index.nginx-debian.html index.php;
服务器名称domain.tld www.domain.tld;
位置~\.php${
fastcgi\u split\u path\u info^(.+\.php)(/.+)$;
包括snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
包括fastcgi_参数;
fastcgi\参数脚本\文件名$document\根$fastcgi\脚本\名称;
fastcgi_截获_错误关闭;
}
地点/g/{
try_files$uri$uri//yourls loader.php$is_args$args;
14天期满;
添加_头缓存控制“公共”;
}
地点/{
try_files$uri$uri//index.php?$args;
}
#拒绝访问.htaccess文件,如果Apache的文档根
#同意nginx的观点
#
位置~/\.ht{
否认一切;
}

}
location/g/
try\u files
指令的问题在于指向YOURLS加载程序的路径不正确。如果URL处理程序(yourls loader.php)位于/g目录中,则必须更改其路径以包含
/g
目录:

try_files$uri$uri//g/yourls loader.php$is_args$args

位置规则并不意味着每个路径也从该位置处理,而是从上面给出的根路径处理