If statement 我是否需要在每个服务器块中声明if语句

If statement 我是否需要在每个服务器块中声明if语句,if-statement,nginx,configuration,bots,If Statement,Nginx,Configuration,Bots,我有一个我正在使用的bot阻塞图,它使nginx以444响应。我在每个服务器块中都有“if”块,它可以正常工作,但我想知道,将它放在自己的服务器块的顶部是否更好,或者我应该如何做 目前,my domainname.org.conf文件有3个服务器块。第一个块执行从旧域请求到新域的不安全和安全重定向(我们重新命名)。第二个块处理将domainname.org重定向到www.domainname.org的问题。第三个街区实际上有肉和土豆供PHP和诸如此类的东西吃 这里是conf,省略了一些数据并使其

我有一个我正在使用的bot阻塞图,它使nginx以444响应。我在每个服务器块中都有“if”块,它可以正常工作,但我想知道,将它放在自己的服务器块的顶部是否更好,或者我应该如何做

目前,my domainname.org.conf文件有3个服务器块。第一个块执行从旧域请求到新域的不安全和安全重定向(我们重新命名)。第二个块处理将domainname.org重定向到www.domainname.org的问题。第三个街区实际上有肉和土豆供PHP和诸如此类的东西吃

这里是conf,省略了一些数据并使其混淆

server {
    listen 80;
    listen 443;

    MY CERT STUFF IS HERE BUT I'M NOT SHARING DETAILS

    server_name olddomainname.org *.olddomainname.org;

    #blocks blank user_agents
    if ($limit_bots = 1) {
        return 444;
    }

    return 301 https://www.newdomainname.org$request_uri;

}

#############################################################################################
# THIS SERVER BLOCK SIMPLY ACCEPTS ANY INCOMING NON-SUBDOMAININSECURE DOMAIN AND REROUTES IT TO A SECURE ONE
# IT ONLY AFFECTS THE PROD WEBSITE. IT SHOULD NOT INTERFERE WITH ANY DEVELOPMENT SUBDOMAINS

server {
    listen 80;
    listen 443;
    server_name newdomainname.org;

    #blocks blank user_agents
    if ($limit_bots = 1) {
        return 444;
    }

    return 301 $scheme://www.newdomainname.org$request_uri;
}

#############################################################################################
# THIS SERVER BLOCK HANDLES ANY INCOMING INSECURE SUBDOMAIN


server {
    listen 80;
    listen 443 default ssl;

   MY CERT STUFF IS HERE BUT I'M NOT SHARING DETAILS

    server_name www.newdomainname.org;

    #blocks blank user_agents
    if ($limit_bots = 1) {
        return 444;
    }

    ## Redirect 80 to 443
    if ($scheme = http) {
       return 301 https://$server_name$request_uri;
    }


    root /var/www;
这是可行的,但增加了重复

我想知道把它放在自己的服务器块的顶端是否会更好

否-它要么被忽略,要么会破坏现有的
服务器

nginx
根据
listen
server\u name
指令的值,选择one
server
块来处理请求。有关详细信息,请参阅


如果您有许多公共代码,在多个
服务器
块之间共享,请将其放在单独的文件中,并使用
include
语句。有关更多信息,请参阅。

这篇文章很有见地,为我找到自己的解决方案提供了方向。非常感谢。