Eu tenho uma entrada de servidor em minhas configurações com cerca de 50 entradas de local. Preciso definir outro domínio em meu servidor com a mesma configuração, exceto para um local
por exemplo eu tenho
server {
# the port your site will be served on
# the domain name it will serve for
listen 443 ssl;
server_name example.com sudomain.example.com;
ssl_certificate /etc/loc/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/loc/privkey.pem; # managed by Certbot
proxy_set_header X-Forwarded-Proto https;
location /static/ {
root /srv/sites/example;
}
... # many more location defenition
}
eu preciso fazer algo como
location /robots.txt {
if ($host ~ ^\w+\.\w+\.\w+$) {
# subdomains
alias /srv/robots_disallow.txt;
} else {
alias /srv/robots.txt;
}
}
se for possível, quero evitar extrair toda a configuração em um snippet e incluí-la em 2 entradas de servidor, uma para o domínio principal e outra para o subdomínio.
Eu sei que o código que copiei não funciona e lise é mau
o que sugere algo
error_page 418 = @disallow_robots;
location /robots.txt {
alias /srv/robots.txt;
if ($host ~ ^\w+\.\w+\.\w+$) {
# subdomains
return 418;
}
}
location @disallow_robots {
alias /srv/robots_disallow.txt;
}
Mas então eu entendothe "alias" directive cannot be used inside the named location
Responder1
Você obterá uma solução mais limpa com um map
e uma try_files
declaração.
Por exemplo:
map $host $robots {
~^\w+\.\w+\.\w+$ /robots_disallow.txt;
default /robots.txt;
}
server {
...
location = /robots.txt {
root /srv;
try_files $robots =404;
}
...
}
Veresse documentopara detalhes.