If statement 我是否需要在每个服务器块中声明if语句
我有一个我正在使用的bot阻塞图,它使nginx以444响应。我在每个服务器块中都有“if”块,它可以正常工作,但我想知道,将它放在自己的服务器块的顶部是否更好,或者我应该如何做 目前,my domainname.org.conf文件有3个服务器块。第一个块执行从旧域请求到新域的不安全和安全重定向(我们重新命名)。第二个块处理将domainname.org重定向到www.domainname.org的问题。第三个街区实际上有肉和土豆供PHP和诸如此类的东西吃 这里是conf,省略了一些数据并使其混淆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,省略了一些数据并使其
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
指令的值,选择oneserver
块来处理请求。有关详细信息,请参阅
如果您有许多公共代码,在多个
服务器
块之间共享,请将其放在单独的文件中,并使用include
语句。有关更多信息,请参阅。这篇文章很有见地,为我找到自己的解决方案提供了方向。非常感谢。