Erstellen einer lokalen Nginx-Subdomäne für Laravel

Erstellen einer lokalen Nginx-Subdomäne für Laravel

Ich habe derzeit einen funktionierenden Reverseproxy zu einer lokalen Domäne:https://domain.testmit einem Eintrag in /etc/hosts

127.0.0.1 domain.test

https://domain.testgeht zu einer Spa-Website, während https://domain.test/apies zu einem Laravel geht, um alle API-Aufrufe zu verarbeiten.

Ich hätte gerne eine Subdomain zBhttps://sub.domain.testund haben einen anderen API-Server zu handhabenhttps://sub.domain.test/api

Dies ist mein aktueller /etc/nginx/sites-enabled/domain.conferster Serverblock, der auf https umleitet. https://domain.testwird von Spa behandelt, währendhttps://domain.test/apiwird über Port 8282 per Reverse-Proxy übermittelt.

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;
}

Ich habe versucht, zwei neue Serverblöcke hinzuzufügen, um die Subdomain zu verwaltenhttps://sub.domain.testund fügte einen Eintrag hinzu zu/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;
}

aber es funktioniert nicht, weil ich glaube, dass der erste Server die Weiterleitungen mit 301 blockiert.

Ich kann auch keinen doppelten Serverblock hinzufügen, der sowohl auf 80 als auch auf 443 hört. Ich brauche immer nochhttps://domain.testarbeiten.

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

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

Ich habe beides gemacht sudo nginx -tundsudo systemctl restart nginx.service

Ich habe einen Test-Controller für die Subdomain-API erstellt, umhttps://sub.domain/api/test curl -k --location --request GET 'https://sub.domain.test/api/test'aber es kehrt zurück

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

Beide /var/log/nginx/domain-access.loghaben einen Logeintrag:

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.logund /var/log/nginx/nginx-proxy-laravel-subdomain.access.logsind leer

Daher muss der erste Block eindeutig repariert werden, um den Zugriff auf die Subdomäne zu ermöglichen.

verwandte Informationen