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

时间:2020-10-26 14:39:28

标签: nginx

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

server_name slf.online www.slf.online mrkt.slf.online api.slf.online artterm.slf.online;
[...]
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/mrkt.slf.online-0001/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mrkt.slf.online-0001/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

nginx: [warn] conflicting server name "artterm.slf.online" on 0.0.0.0:443, ignored

如果最后一个条目被删除

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

但是流量并未路由到该第3级域。
我看不到有效的第三级域的语法在哪里。

此域集sites-enabled/slf的配置文件有两个server块,其中第二个是由letencrypt生成的,用于将流量重定向到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;

这是另外一个有罪过的假设,但是我仍然看不到脆性的来源。

如何克服?

1 个答案:

答案 0 :(得分:0)

@Richard Smith的评论是正确的。

> random_model[[1]] Estimate Std. Error t value Pr(>|t|) (Intercept) 48.26285335 8.219065181 5.872061 7.573836e-05 cyl -3.33999161 1.366231326 -2.444675 3.089262e-02 disp -0.12941685 0.063269362 -2.045490 6.337414e-02 cyl:disp 0.01394436 0.007877833 1.770076 1.020931e-01 > random_model[[10]] Estimate Std. Error t value Pr(>|t|) (Intercept) 54.27312267 7.662593317 7.082866 1.277746e-05 cyl -4.40545653 1.586392001 -2.777029 1.674235e-02 disp -0.15330770 0.047932153 -3.198431 7.654790e-03 cyl:disp 0.01792561 0.006707396 2.672514 2.031615e-02 为nginx提供了完整的配置栈,它显示Lets Encrypt正在将证书和nginx -T数据写入单独的证书,低于我对该应用程序的配置通常所期望的值(并且在屏幕外抛出我离开)。

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

注意:这不是我第一次从自动化的“让我们加密”脚本中观察到意外的,怪异的行为。