2 votes

Configuration NGINX pour la backend API Laravel

J'ai déployé mon interface frontale angulaire et mon backend Laravel sur une machine virtuelle Ubuntu avec un serveur web Nginx.

Maintenant, l'interface frontale fonctionne bien et est accessible via mon URL, cependant l'API du backend ne fonctionne pas - je reçois des erreurs 404 à ce sujet.

Voici ma configuration nginx :

server {
    listen 443 ssl;
    server_name my_ip myurl.de www.myurl.de;
    root /var/www/html/dist;
    index index.html;
    ssl_certificate /etc/nginx/cert.cer;
    ssl_certificate_key /etc/nginx/prvt.key;

    location / {
        try_files $uri $uri/ /index.html;
    }

    location /3rdpartylicenses.txt {
        alias /var/www/html/dist/3rdpartylicenses.txt;
    }

    location /assets {
        alias /var/www/html/dist/assets;
    }

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /index.nginx-debian.html {
        log_not_found off;
        access_log off;
    }

    location ^~ /api {
        root /backend/LeagueOf5v5Backend/public;
        index index.php;
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock; # Adjust the PHP-FPM socket path if needed
    }

    location ~ /\.ht {
        deny all;
    }

    error_page 404 /index.html;

    # Additional Nginx configuration settings can go here.
}

J'ai essayé de le tester avec https://nginx.viraptor.info, qui a confirmé qu'il avait testé le préfixe /api.

Cependant, en utilisant postman et l'URL, j'obtiens l'erreur 404. Mais quand je suis sur ma machine locale et que je le teste avec postman via localhost:8000/api/..., cela fonctionne très bien.

Toute aide est appréciée !

EDIT : Il s'agit d'un fichier de configuration pour à la fois Angular et Laravel.

0voto

Jay Pandya Points 344

Vous pouvez toujours servir l'application avec un seul fichier de configuration. Tout d'abord, vous devez démarrer votre service Angular avec pm2 par exemple sur le port 3000.

Ensuite, vous devez garder le dossier de votre package Laravel comme dossier racine et effectuer un réglage de proxy pour pointer votre emplacement vers le port 3000.

serveur {
        root /chemin_vers_votre_package_laravel/public/;
        # Ajoutez index.php à la liste si vous utilisez PHP
        index index.html index.htm index.nginx-debian.html index.php;
        server_name votre_url_de_serveur;

        location / {
                proxy_pass http://127.0.0.1:3000;
        }

        location /api {
                alias /chemin_vers_votre_package_laravel/public/;
                try_files $uri $uri/ /index.php$is_args$args;
        }

        location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
            fastcgi_index index.php;
            include fastcgi.conf;
    }

    location ~ /\.ht {
        deny all;
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X