¿Cómo configuro subdominios con NGINX y DDNS?

¿Cómo configuro subdominios con NGINX y DDNS?

He registrado un subdominio ddns en No-IP: example.ddns.net configuré No-IP para asignarlo a la IP de mi enrutador, que reenvía el puerto a mi servidor web NGINX. Quiero tener un servidor web separado que alojé y web1.example.ddns.netque apunte a /var/www/web1. Lo que no sé es cómo decirle a NGINX que apunte /var/www/web1cuando se le llame desde web1.example.ddns.net. ¿Alguien puede darme una explicación detallada sobre cómo configurar mi servidor?

A continuación se muestra mi configuración para example.ddns.netesta configuración . /etc/nginx/sites-available/Hay un enlace a /etc/nginx/sites-enabled.

server {
        listen 80 default_server;
        listen [::]:80 default_server;
       
        root /var/www/example.ddns.net;

        server_name example.ddns.net;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

}

A continuación se muestra mi configuración para web1.example.ddns.netesta configuración . /etc/nginx/sites-available/Hay un enlace a /etc/nginx/sites-enabled.

server {
        listen 80;
        listen [::]:80;
       
        root /var/www/web1.example.ddns.net;

        server_name web1.example.ddns.net;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

}

Estos son los únicos archivos que he cambiado. El siguiente servidor NGINX está alojado en Ubuntu Server y estoy accediendo al servidor a través de ssh y accediendo a la página web a través de una computadora separada. ¿Alguien puede dar algunas instrucciones sobre cómo solucionar este problema?

Respuesta1


La siguiente respuesta es bastante básica. Así que perdóname si repaso algo que ya sabes. =)


He registrado un subdominio DDNS en No-IP: example.ddns.net. [...] quiero tener un servidor web separado que alojo y web1.example.ddns.netque apunte a /var/www/web1.

Como aviso, si aún no lo has hecho, debes hacer un ex. web1.example.ddns.netcon No-IP y apúntelo a su servidor. De lo contrario, la configuración del servidor no importará, ya que nadie podrá contactar con el servidor a través de esa dirección.

Lo que no sé es cómo decirle a NGINX que apunte /var/www/web1cuando se le llame desde web1.example.ddns.net.

Todo lo que realmente deberías necesitar son bloques de servidor básicos. Tomando como referencia los ejemplos predeterminados de NGINX:

ex. ejemplo.ddns.net

server {
        listen       80;
        server_name  example.ddns.net;
        
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   /var/www/example.ddns.net;
            index  index.html index.htm;
        }

        # error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

ex. web1.ejemplo.ddns.net

server {
        listen       80;
        server_name  web1.example.ddns.net;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   /var/www/web1;
            index  index.html index.htm;
        }

        # error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

Instrucciones básicas

  • Para Ubuntu, debe colocar estos bloques de servidor en el sites-availabledirectorio apropiado (por ejemplo, /etc/nginx/sites-available/) como, por ejemplo, example.ddns.nety web1.example.ddns.net.

  • Cree los enlaces simbólicos relevantes a sites-enabled(ej. /etc/nginx/sites-enabled/) como, por ejemplo:

    sudo ln -s /etc/nginx/sites-available/example.ddns.net /etc/nginx/sites-enabled/
    sudo ln -s /etc/nginx/sites-available/web1.example.ddns.net /etc/nginx/sites-enabled/
    

    o por cualquier método recomendado por su sistema operativo.

  • Ejecute nginx -t(como por ejemplo sudo nginx -t) como se sugiere en los comentarios para asegurarse de que NGINX no encuentre ningún error de sintaxis u otros problemas.

  • Reinicie NGINX con ej. sudo systemctl restart nginx.

Notas

  • Los bloques anteriores eliminan IPv6 (esto probablemente no debería ser necesario para las pruebas).

  • Ninguno de estos ejemplos utiliza default_server.

  • Cada entrada respectiva rootse coloca en un locationbloque (es decir, la raíz del sitio web /).

  • El segundo bloque de servidor anterior se utiliza /var/www/web1como rootfor /(en lugar de web1.example.ddns.net), ya que eso es lo que especificó inicialmente en su pregunta. En cualquier caso, para ser claros, rootdebe coincidir con cualquier estructura de directorios que tenga en su sistema de archivos físico. Es decir, no tiene que reflejar su archivo server_name, a menos que haya creado directorios (o similares) llamados ex. example.ddns.nety web1.example.ddns.net.

  • El primer bloque de servidor todavía se utiliza /var/www/example.ddns.net, así que asegúrese de que sea la ruta correcta al lugar donde almacena sus archivos example.ddns.net.

  • En términos generales, después de realizar cambios en su servidor, generalmente es una buena medida borrar la memoria caché de su navegador para que éste no le devuelva datos antiguos.

información relacionada