2012-04-10 15 views
16

Quiero probar los subdominios nginx antes de cargar la configuración en el servidor. ¿Puedo probarlo en localhost? IntentoCómo probar los subdominios nginx en el host local

server { 
    listen  80; 
    server_name localhost; 

    location/{ 
     proxy_pass http://localhost:8080; 
    } 
} 

server { 
    listen  80; 
    server_name sub.localhost; 

    location/{ 
     proxy_pass http://localhost:8080/sub; 
    } 
} 

Y no funciona. ¿Debería cambiar mi archivo de hosts para que funcione? Además, después de subir el sitio al servidor ¿debo cambiar los registros DNS y agregar sub.midominio.com?

Respuesta

15

Sí, agregue 'sub.localhost 127.0.0.1' al archivo de su host. Ese submarino tiene que ser resuelto de alguna manera. Eso debería funcionar.

Luego, una vez que esté listo para ir a la red, sí, agregue un registro a o cname para el subdominio.

Cuando uso proxy_pass también incluyo el proxy.conf de nginx. http://wiki.nginx.org/HttpProxyModule

+0

Sí, gracias, funciona. – madhead

5

Para su servidor web público con su propio nombre de dominio, sólo tiene que añadir un nombre canónico usando un registro CNAME en la configuración de DNS:

CNAME * example.com. 

Una vez hecho esto, establezca el establecimiento de su nginx

server_name *.example.com example.com; 

En su configuración local puede mantener la misma configuración para nginx, pero a menos que tenga una configuración DNS local, tendrá que editar su archivo/etc/hosts y agregar cada subdominio manualmente. los comodines no funcionan en el archivo/etc/hosts.

127.0.0.1 abc.example.com def.example.com ghi.example.com 

En general, se recomienda utilizar .local como espacio de nombres para sus dominios locales.

1

En sistema operativo basado en Linux sólo para editar como sudo/etc/hosts archivo y cambiar 127.0.0.1 localhost a 127.0.0.1 *.localhost.

Por lo tanto, en /etc/nginx/sites-enabled/<environment>/<your_project_name> edite la clave como <subdomain>.localhost.

Reinicia el servicio nginx.

$ sudo service nginx restart 

Y luego intente http://<subdomain>.localhost en la barra de la url.

Funciona para mí.

ACTUALIZACIÓN

En mi opinión, la mejor solución es la creación de un servidor virtual que sólo responde si subdominio no existe, por lo /etc/nginx/sites-enabled/development/default, como servidor predeterminado (recuerde que puede definir un único servidor por defecto)

server { 
    listen 80 default_server; 
    root /var/www/html/errors; 
    server_name *._; 

    location/{ 
    index 404.html; 
    } 

} 

Asegúrese de que en nginx.conf (generalmente a /etc/nginx/nginx.conf) contienen include /etc/nginx/sites-enabled/**/*; a este trabajo servidor virtual. Si no, póngalo y luego ejecute $ sudo service nginx restart.

En este caso, no es necesario poner *.localhost en /etc/hosts, pero solo localhost.

Cuestiones relacionadas