我有一个机器人阻挡地图,我正在使用它使得nginx以444响应。我有"如果"每个服务器块中的块都可以工作,但是我想知道如果将它放在自己的服务器块中的顶部会更好,或者我应该怎么做呢?
目前,我的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;
这有效,但增加了重复。
答案 0 :(得分:1)
我想知道如果将它放在自己的服务器块中的顶部会更好
不 - 它会被忽略,或者会破坏现有的server
块。
nginx
根据server
和listen
指令的值,选择一个 server_name
块来处理请求。有关详细信息,请参阅this document。
如果您有许多公共代码,在多个server
块之间共享,请将其放在单独的文件中并使用include
语句。有关详情,请参阅this document。