nginx冲突服务器名称在语法错误上不清楚

nginx冲突服务器名称在语法错误上不清楚,nginx,Nginx,以下对服务器名称的调用将生成一个错误,并忽略第三级域,从而创建指向同一“/”页面的无限循环 如果删除了最终条目 server_name slf.online www.slf.online mrkt.slf.online api.slf.online; nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok 但该流量不是为该三级域路由的。 我看不出一个有效的三级域的语法哪里错了 此域集站点启用/slf的此

以下对服务器名称的调用将生成一个错误,并忽略第三级域,从而创建指向同一“/”页面的无限循环

如果删除了最终条目

server_name slf.online www.slf.online mrkt.slf.online api.slf.online;
nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
但该流量不是为该三级域路由的。
我看不出一个有效的三级域的语法哪里错了

此域集
站点启用/slf
的此配置文件有两个
服务器
块,其中第二个块由letsencrypt生成,用于将流量重定向到https页面:

if ($host = artterm.slf.online) {
    return 301 https://$host$request_uri;
} # managed by Certbot

listen 80;
return 404; # managed by Certbot
我不明白这段代码怎么可能是问题的根源。如果第二个块起作用(为什么没有最后一个条目不会产生忽略情况?)

另一个配置文件具有相同的二级域,但具有不同的三级域

server_name prva.sfl.online prve.slf.online sales.slf.online;
这是另一种罪责的假设,但我再一次看不出脆性来自何处


如何克服这一问题?

@Richard Smith的评论是正确的

nginx-T
,为nginx提供了完整的配置堆栈,显示Lets Encrypt正在将证书和
server\u name
数据写入一个单独的证书,低于我通常对该应用程序配置的期望值(并且在屏幕外,因此将我甩下)

这自然会将流量引导到另一个应用程序的逻辑,该逻辑不知道如何处理请求,并将其引导到非自退出循环

注意:这不是我第一次从自动化的Let's Encrypt脚本中观察到意外、不稳定的行为。

使用
nginx-T
(大写
T
)查看所有包含文件的整个配置。检查包含
listen 443
指令的
server
块中重复的
server\u名称
server_name prva.sfl.online prve.slf.online sales.slf.online;