creando un subdominio nginx local para laravel

creando un subdominio nginx local para laravel

Actualmente tengo un proxy inverso funcional para un dominio local:https://dominio.pruebacon una entrada en /etc/hosts

127.0.0.1 domain.test

https://domain.testva al sitio web de un spa mientras https://domain.test/apiva a laravel para manejar todas las llamadas a la API.

Me gustaría tener un subdominio, por ejemplo.https://sub.dominio.pruebay tener otro servidor API para manejarhttps://sub.domain.test/api

Este es mi /etc/nginx/sites-enabled/domain.confprimer bloque de servidor actual que redirecciona a https. https://dominio.pruebaes atendido por el spa mientrashttps://dominio.prueba/apitiene proxy inverso mediante el puerto 8282.

access_log /var/log/nginx/domain-access.log;
error_log /var/log/nginx/domain-error.log;

server {
    listen 80 default_server;
    listen [::] default_server;

    return 301 https://domain.test$request_uri;
}

server {
   listen 443 ssl http2 default_server;
   listen [::]:443 ssl http2 ipv6only=on default_server;

   ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
   ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
   
   server_name domain.test;

   location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_ssl_server_name on;
        proxy_set_header Upgrade $http_update;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
   }

    location /api {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8282;
    }
}

server {
    listen 8282;

    server_name localhost;
    root /home/gmhafiz/domain/public;
    index index.php;

    location / {
         try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_read_timeout 600;
        include fastcgi_params;
    }

    error_log /var/log/nginx/nginx-proxy-laravel.error.log;
    access_log /var/log/nginx/nginx-proxy-laravel.access.log;
}

Intenté agregar dos nuevos bloques de servidor para manejar el subdominiohttps://sub.dominio.pruebay agregó una entrada a/etc/hosts

server {
    server_name sub.domain.test;

    location /api {
        proxy_pass http://127.0.0.1:8283;
    }
}

server {
    listen 8383;

    server_name localhost;
    root /home/gmhafiz/projects/subdomain/public;
    index index.php;

    location / {
         try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
            try_files $uri /index.php =404;
            fastcgi_pass unix:/run/php/php7.4-fpm.sock;
            fastcgi_index index.php;
            fastcgi_buffers 16 16k;
            fastcgi_buffer_size 32k;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_read_timeout 600;
            include fastcgi_params;
    }

    error_log /var/log/nginx/nginx-proxy-laravel-subdomain.error.log;
    access_log /var/log/nginx/nginx-proxy-laravel-subdomain.access.log;
}

pero no funciona porque creo que el primer bloque del servidor redirige con 301.

Tampoco puedo agregar un bloque de servidor duplicado que escuche tanto 80 como 443. Sigo necesitandohttps://dominio.pruebatrabajar.

server {
   listen 80 default_server;
   listen [::] default_server;

    return 301 https://queue.dribl.test$request_uri;
}

He hecho ambas cosas sudo nginx -tysudo systemctl restart nginx.service

Hice un controlador de prueba para que lo manejara la API del subdominiohttps://sub.dominio/api/test curl -k --location --request GET 'https://sub.domain.test/api/test'pero regresa

{"error": "Endpoint not found."}

Ambos /var/log/nginx/domain-access.logtienen una entrada de registro:

127.0.0.1 - - [08/Jan/2021:13:51:36 +1100] "GET /api/test HTTP/2.0" 400 31 "-" "curl/7.68.0"

/var/log/nginx/nginx-proxy-laravel.access.log

127.0.0.1 - - [08/Jan/2021:13:51:36 +1100] "GET /api/test HTTP/1.0" 400 31 "-" "curl/7.68.0"

/var/log/nginx/nginx-proxy-laravel-subdomain.error.logy /var/log/nginx/nginx-proxy-laravel-subdomain.access.logestan vacios

Claramente, el primer bloque debe arreglarse para permitir el acceso al subdominio.

información relacionada