【问题标题】:Do i need to declare if statement in each server block我是否需要在每个服务器块中声明 if 语句
【发布时间】:2018-05-01 15:51:14
【问题描述】:

我有一个我正在使用的机器人阻止地图,它使 nginx 以 444 响应。我在每个服务器块中都有“if”块并且它可以工作,但我想知道是否只是将它放在自己服务器的顶部块会更好,或者我应该怎么做?

目前,我的 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;

这可行,但增加了重复。

【问题讨论】:

    标签: if-statement nginx configuration bots


    【解决方案1】:

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

    不 - 它要么被忽略,要么会破坏您现有的 server 块。

    nginx 根据listenserver_name 指令的值选择一个 server 块来处理请求。详情请见this document

    如果您有很多公共代码,在多个 server 块之间共享,请将其放在单独的文件中并使用 include 语句。请参阅this document 了解更多信息。

    【讨论】:

    • 这很有见地,足以为我提供一个方向来找到我自己的解决方案来解决这个问题。谢谢
    猜你喜欢
    • 2021-11-19
    • 2014-06-20
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多