
¿Cuál es la diferencia entre subdominios y rutas de ubicación?
ejemplo:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name xxxx.yyy.com;
location / {
proxy_pass http://127.0.0.1:3000;
}
}
o
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, el nivel de separación difiere, el primero está separado en los servidores DNS y el segundo la dirección de la solicitud ocurre en el propio nginx. Lo que tengo curiosidad por saber es cuáles son las precauciones al elegir una solución sobre la otra.
Respuesta1
Puede decirle a NGINX que responda a todas las solicitudes en una dirección IP o puerto si lo desea. Los subdominios/dominios en la configuración simplemente limitan las respuestas de un bloque de configuración de "servidor" específico.
La ubicación tienenadaque ver con dominios/subdominios, excepto que viven de lo que esté configurado en el bloque del servidor. Generalmente para NGINX, lo primero que hará será configurar sus dominios e IP para escuchar y luego olvidarse de eso por completo.
Su primer ejemplo configura xxxx.yyy.com
=>http://127.0.0.1:3000
Configuración del segundo ejemplo yyy.com/xxxx
=>http://127.0.0.1:4000
Puede combinar el ejemplo n.° 1 con el ejemplo n.° 2 colocando tanto el dominio base como el subdominio en el bloque de servidor del n.° 2 (si no le importa que ambas rutas funcionen tanto para el dominio base como para el subdominio):
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;
}
}
Entonces puede ver que no hay "separación en el DNS", como usted dice, a menos que los aloje en diferentes direcciones IP. Vuestra única separación está en los caminos.
El ejemplo combinado produce:
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
Los subdominios no son caminos. Son cosas completamente diferentes. Así que intentar compararlos y contrastarlos sugiere que estás muy desviado en tu comprensión.
Quizás haya tenido un subdominio en algún lugar del pasado donde tenía un directorio para un subdominio y otro directorio para el dominio principal. Estos son sus docroots, y así es como algunas herramientas de administración de servidores basadas en web configuran las cosas de forma predeterminada. No existe una asociación inherente entre subdominios y rutas a menos que usted (o alguna herramienta o administrador de sistemas) cree una.
Puede asignar cualquier dominio o subdominio, o cualquier ruta que establezca en un bloque de ubicación, a /cualquier/ruta/que/quiera en su sistema de archivos.
La ubicación tiene que ver con SENDEROS... y aquí nuevamente, después de que NGINX ha encontrado una solicitud que coincide con el bloque del servidor, está buscando solicitudes que coincidan con la ruta en la solicitud HTTP.
/thispath /thatpath /foo /bar o /foo/bar/on/thatpath o puedes usar comodines y expresiones regulares. Puede configurar diferentes extensiones de archivos para que se sirvan desde diferentes directorios, o un uso común de la ubicación es decirle a NGINX cómo manejar ciertos tipos de archivos como PHP.
Aquí se proporcionan varios ejemplos de configuraciones:http://nginx.org/en/docs/beginners_guide.html
Si esto le resulta útil, vote a favor o márquelo como solución. ¡Gracias!
Respuesta2
Dado que el tema es la configuración de nginx, no hay separación de niveles de DNS si ambos dominios apuntan a la misma IP/servidor.
La diferencia es en qué dominios hay qué rutas disponibles/manejadas.
Puede configurar varios dominios con las mismas ubicaciones pero con un dominio diferente. Ese es el uso principal de server_name
.
location
Los bloques son la parte de la URL después del nombre de dominio/IP.
http://www.example.com/location/
Puede hacer que diferentes rutas locales estén disponibles en diferentes bloques de ubicación/URL.
Lo que puede lograr con dns es diferente de la configuración de nginx.
La operación por turnos de DNS hace posible el equilibrio de carga y la alta disponibilidad.
La resolución basada en la ubicación geográfica permite una entrega de contenido más rápida.
Realmente depende de lo que quieras lograr.