【发布时间】: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