
Qual é a diferença entre subdomínios e caminhos de localização
exemplo:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name xxxx.yyy.com;
location / {
proxy_pass http://127.0.0.1:3000;
}
}
ou
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name yyy.com;
location / {
proxy_pass http://127.0.0.1:3000;
}
location /xxxx/ {
proxy_pass http://127.0.0.1:4000;
}
}
obviamente o nível de separação é diferente, o primeiro é separado nos servidores DNS e o segundo a direção da solicitação acontece no próprio nginx. o que estou curioso para saber é quais são as precauções de escolher uma solução em vez de outra.
Responder1
Você pode dizer ao NGINX para responder a todas as solicitações em um endereço IP ou porta, se desejar. Subdomínios/domínios na configuração apenas limitam as respostas de um bloco de configuração de "servidor" específico.
A localização temnadatem a ver com domínios/subdomínios, exceto que eles vivem de tudo o que está configurado no bloco do servidor. Geralmente para NGINX, a primeira coisa que você faz é configurar seus domínios e IP para escuta e depois esquecer isso completamente.
Seu primeiro exemplo configura xxxx.yyy.com
=>http://127.0.0.1:3000
Segundo exemplo configurado yyy.com/xxxx
=>http://127.0.0.1:4000
Você pode combinar o exemplo nº 1 com o exemplo nº 2, colocando o domínio base e o subdomínio no bloco de servidor nº 2 (se você não se importa que ambos os caminhos funcionem tanto para o domínio base quanto para o subdomínio):
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name yyy.com xxxx.yyy.com;
location / {
proxy_pass http://127.0.0.1:3000;
}
location /xxxx/ {
proxy_pass http://127.0.0.1:4000;
}
}
Então você pode ver que não há "separação no DNS", como você diz - a menos que você os hospede em endereços IP diferentes. Sua única separação está nos caminhos.
O exemplo combinado produz:
xxxx.yyy.com
=>http://127.0.0.1:3000
yyy.com
=>http://127.0.0.1:3000
yyy.com/xxxx
=>http://127.0.0.1:4000
xxxx.yyy.com/xxxx
=>http://127.0.0.1:4000
Subdomínios não são caminhos. São coisas totalmente diferentes. Portanto, tentar compará-los e contrastá-los sugere que você está muito errado em sua compreensão.
Talvez você tenha tido um subdomínio em algum lugar no passado onde tinha um diretório para um subdomínio e outro diretório para o domínio principal. Estes são os seus docroots, e é assim que algumas ferramentas de administração de servidor baseadas na Web configuram as coisas por padrão. Não há associação inerente entre subdomínios e caminhos, a menos que você (ou alguma ferramenta ou administrador de sistema) crie uma.
Você pode mapear qualquer domínio ou subdomínio - ou qualquer caminho definido em um bloco de localização - para /any/path/you/want em seu sistema de arquivos.
Localização tem tudo a ver com PATHS... e aqui novamente, depois que o NGINX encontrou uma solicitação que corresponde ao bloco do servidor, ele está observando as solicitações que correspondem ao caminho na solicitação HTTP.
/thispath /thatpath /foo /bar ou /foo/bar/on/thatpath ou você pode usar curingas e expressões regulares. Você pode configurar diferentes extensões de arquivo para serem veiculadas em diretórios diferentes, ou um uso comum de localização é informar ao NGINX como lidar com certos tipos de arquivo, como PHP.
Vários exemplos de configurações são fornecidos aqui:http://nginx.org/en/docs/beginners_guide.html
Se você achar isso útil, vote positivamente ou marque como uma solução. Obrigado!
Responder2
Como o tópico é configuração do nginx, não há separação de nível de DNS se ambos os domínios apontarem para o mesmo IP/servidor.
A diferença é em quais domínios estão quais caminhos disponíveis/manuseados.
Você pode configurar vários domínios com os mesmos locais, mas com um domínio diferente. Esse é o principal uso do server_name
.
location
os blocos são a parte do URL após o nome de domínio/IP.
http://www.example.com/location/
Você pode disponibilizar diferentes caminhos locais em diferentes blocos/URLs de localização.
O que você pode conseguir com o DNS é diferente da configuração do nginx.
O round robin de DNS torna possível o balanceamento de carga e a alta disponibilidade.
A resolução baseada em localização geográfica permite uma entrega mais rápida de conteúdo.
Realmente depende do que você deseja alcançar.